深圳罗湖网站建设网络营销公司排名
结构体指针和结构体数组指针是不同的类型。
 结构体指针定义:Student *stu 结构体指针的步长是一个结构体的大小;
 结构体数组指针定义:Student (*stu)[] 结构体数组指针的步长是整个结构体数组的大小。
例程:
#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 typedef struct _student{
 char name[64];
 int age;
 } Student;
int myPrintf1(Student *stu,int * len) {//Student *stu:定义结构体数组指针
 int lenth = *len;
 Student *st = stu;
 printf(“-----------------\n”);
 printf(“%s\n”,func);
 for(int i=0; i<lenth; i++) {
 printf(“%s\n”,st[i].name);
 printf(“%d\n”,st[i].age);
 }
return 0;
 
}
 int myPrintf2(Student (*stu)[],int * len) { //Student (*stu)[]:定义结构体数组指针stu
 int lenth = *len;
 printf(“-----------------\n”);
 printf(“%s\n”,func);
 for(int i=0; i<lenth; i++) {
 printf(“%s\n”,(*stu)[i].name);
 printf(“%d\n”,(*stu)[i].age);
 }
 return 0;
 }
 int myPrintf3(Student (*stu)[],int * len) { //Student (*stu)[]:定义结构体数组指针stu
 int lenth = *len;
 Student (*mystu)[];//定义结构体数组指针mystu
 mystu = stu;//复制结构体数组指针
 printf(“-----------------\n”);
 printf(“%s\n”,func);
 for(int i=0; i<lenth; i++) {
    printf("%s\n",(*mystu)[i].name);printf("%d\n",(*mystu)[i].age);
}
return 0;
 
}
int main() {
 int len = 2;
 Student stu[len];//定义结构体数组
 strcpy(stu[0].name,“aaaaa”);
 stu[0].age = 20;
strcpy(stu[1].name,"bbbb");
stu[1].age = 22;myPrintf1(stu,&len);//将结构体数组首元素地址(结构体指针)拷贝给形参myPrintf2(&stu,&len);//将结构体数组地址&stu拷贝给形参myPrintf3(&stu,&len);//将结构体数组地址&stu拷贝给形参return 0;
 
}
结果:

