#include<stdio.h>
//定义一个结构体
struct student {
int num;
char name[20];
char sex;
};
int main()
{
struct student classA[2] = { 7,"kevin",'m',35,"durant",'f' }; //定义一个结构体数组
struct student* p = classA;
//因为classA是数组,数组名就是首地址,加不加&再vs2019中居然是一样的,我暂时也不太明白!
printf("%s num is %d\n", p->name, p->num);
p->num++;
printf("p->num++ is %d\n", p->num++); // 7+1=8
p++->num;
printf("p++->num is %d\n", p->num); // 指针先自增,指向数组的下一个元素,打印的值是35
return 0;
}
结构体是考试中常设计的内容;
1、结构体的内存大小遵循边界对齐,32位cpu(X86)下,计算机一次性读取的内存数据是4B,char只占1B,因特尔小端模式下,char sex 在内存中占地址高位,剩下3B的内存空着。
2、结构体数组和指针与一般的数组和指针类似,要注意的是 -> 的优先级没有 . 高,访问结构体成员 “.” 的优先级是最高的,所以指针要用 ->