结构体类型定义的语法语义:
struct 结构体名
{ 成员表列 };
告诉编译器一个新的类型和它的成员变量,该类型的大小等于所有成员变量的大小之和。
结构体变量定义的语法语义::
struct 结构体名 变量名;
在内存中为变量分配内存空间,大小为结构体类型的大小。
访问成员变量的语法:
结构体变量名.成员变量名
strcpy( a.name, "Li Si");
结构体变量地址和动态结构体
struct Student {
int num;
char name[20];
float score[3];
float average;
};
struct Student s;
结构体变量s的成员变量的地址包括:&s.num,s.name,&s.score[0]等,结构体变量s的地址是&s,与&s.num相等
指针变量可以指向结构体变量的成员变量
struct Student s;
int *p = &s.num;
*p = 101;
printf("%d\n", *p);
指针变量可以指向结构体变量
struct student s;
struct student* p;
p=&s;
p->num=101;
printf("%d",(*p).num);
结构体变量地址作为函数参数
结构体变量成员,结构体变量成员地址,可以作为函数实参
void print(int i, int* p)
{ *p = i + 1; }
struct Student s1;
print(s1.num, &s1.num);
结构体变量,结构体变量地址,可以作为函数实参
void print(struct Student s, struct Student *p)
{ p->num = s.num + 1; }
struct Student s1, *p1 = &s1;
print(s1, p1);
结构体数组
语法:struct Student s[3];
结构体数组元素地址
数组名是一个指针常量,代表数组首元素的地址。
指针算术以结构体大小为计算单位。
结构体数组元素地址作为函数参数
数组元素可以作为函数实参,函数的形参是一个数组元素类型的变量
数组元素地址可以作为函数实参,函数的形参是一个数组元素指针类型的变量
需要往函数传整个结构体数组时,或者这个参数会在函数内被改动,函数参数为指针
需要往函数传一个结构体并且这个参数不会在函数内被改动,函数参数为结构体