结构体取地址后加中括号
时间: 2024-11-01 10:07:20 浏览: 15
常量强制转化为一个结构体指针,并以此常量为该结构体的起始地址。
在C语言中,当你获取结构体的地址并使用`[]`操作符时,你实际上是访问结构体内特定成员的位置。例如,当你有如下的定义:
```c
struct stu {
char name[20];
int age;
};
struct stu stu1;
struct stu *p = &stu1;
// p指向stu1的地址,即stu1的首地址
// 对于结构体内的成员,可以用结构体变量名.*来访问
printf("stu1.name的地址: %p\n", &stu1.name); // 打印stu1的名字字段的地址
// 当你做p + 1时,会跳过整个结构体的大小(这里是sizeof(struct stu)),因为每个成员都有自己的地址
// 如果结构体中有数组,如char name[20],则加1不会直接进入下一个成员,而是继续增加数组元素间的距离
printf("p+1后的地址: %p\n", p+1); // 因为结构体大小,通常是连续存储的,所以这可能指向stu1的第二个成员age的地址
// 要访问结构体数组的某个元素,可以使用&stu_array[index]来取得其地址,然后加上索引*数组长度,例如:
struct stu stu_array[3];
printf("stu_array[1].age的地址: %p\n", &stu_array[1].age);
```
阅读全文