关键字
- 结构体的名字就是首地址地址,且结构体的存储方式是尽可能紧凑,大小向结构体里最大字节对齐。
#include <stdio.h>
int main()
{
int i;
char j;
struct person{
int i;
char str[2];
};
struct person lihua = {6, "a"};
printf("int size = %d\r\n", sizeof(i));
printf("char size = %d\r\n", sizeof(j));
printf("person size = %d\r\n", sizeof(lihua));
return 0;
}
输出
int size = 4
char size = 1
person size = 8
int 的字节最大
4+2=6,向四字节对齐,变成了8.
2. 结构体指针移动。
#include <stdio.h>
int main()
{
struct person{
int i;
char sr;
char str[2];
};
struct person *p;
struct person lihua = {6, 'a', "cc"};
p = &lihua;
printf("befor = %p %p\r\n", &lihua, p);
p = p + 4;
printf("after = %p %p\r\n", &(lihua.sr), p);
return 0;
}
输出
befor = 000000000061FE10 000000000061FE10
after = 000000000061FE14 000000000061FE30
061FE10
after = 000000000061FE14 000000000061FE30
指针移动了4*7个字节,4*sizeof(struct person)。