结论:
- 数组名 = 【数组的第一个元素】 的地址;
- 结构体变量名 代表的是整个结构体变量本身;
- 对 结构体变量名 取地址,却是 结构体变量中 第一个成员的地址;
- 对【3】的地址进行取值操作,并不会得到 第一个成员 的数据;
验证:
#include <stdio.h>
int Tab[3] = {1,2,3};
typedef struct None
{
int a;
char b;
float c;
}none;
int main(void)
{
none Num = {65535, 'z', 3.14};
printf("Num = %d\n",Num);
printf("结构体变量名 表示的是 整个结构体本身 \n");
printf("\n");
printf("&Num = 0x%x\n",&Num);
printf("&Num.a = 0x%x\n",&Num.a);
printf("结构体变量名取地址 表示的是 第一个元素的地址 \n");
printf("\n");
printf("*(&Num) = %d\n",*(&Num));
printf("*(&Num.a) = %d\n",*(&Num.a));
printf("Num.a = %d\n",Num.a);
printf("结构体变量名取地址后,进行取值操作并不是第一个成员 \n");
printf("\n");
printf("Num.a = %d\n",Num.a);
printf("Num.b = %c\n",Num.b);
printf("Num.c = %.2f\n",Num.c);
printf("\n");
printf("Tab = %d\n",*Tab);
printf("Tab[0] = %d\n",Tab[0]);
printf("数组名表示的是第一个元素的地址 \n");
return 0;
}
编译结果:
