以结构体指针作为参数,在函数中对age成员执行了加1操作。由于使用了指针作为参数,因此在函数内部对age值做的修改,使得数组的实际值也改变了。
#include<stdio.h>
struct student
{
int number;
char name[20];
char sex;
int age;
char addr[30];
};
//以结构体指针作为参数
void print_struct(struct student *p)
{
//对age成员执行加1操作
p->age ++;
printf("%d,%s,%c,%d,%s\n",p->number,p->name,p->sex,p->age,p->addr);
}
int main()
{
struct student s[3] = { {10000,"Zhang",'m',21,"Shang Hai"},
{10001,"Li",'f',20,"Bei Jing"},
{10002,"Liu",'m',22,"Guang Dong"} };
printf("%d,%d,%d\n",s[0].age,s[1].age,s[2].age);
struct student *p;
for(p=s; p<s+3; p++)
print_struct(p);
printf("%d,%d,%d\n",s[0].age,s[1].age,s[2].age);
return 0;
}