C语言 关于取地址符问题

#include<stdio.h>
#include<stdlib.h>
int main()
{
/*声明结构体*/
struct employee
{
char id[7]; /*ID号码*/
char name[20]; /*员工姓名*/
int salary; /*所得薪资*/
};
/*定义结构体变量,并设置其初值*/
struct employee manager={"D12345","peter",35000};
/*打印出结构体变量的内存地址*/
printf("&manager=%x\n",&manager);
printf("&manager.id=%x\n",&manager.id);
printf("manager.name=%x\n",manager.name);
printf("&manager.salary=%x\n\n",&manager.salary);
system("PAUSE");
return 0;
}
问题是
printf("&manager.id=%x\n",&manager.id);
为什么要用取地址运算符呢?
数组的名字不就代表了数组的首地址么?

数组的名字就是代表数组的第一个字符的首地址,所以说你上面也可以不用printf("&manager.id=%x\n",&manager.id);这样;
如果改成下面这个语句,得到的答案也是一样的:printf("&manager.id=%x\n",manager.id);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-23
我也不知道你为什么还要取地址

如果你还取地址的话,那输出的就是保存manager地址的地址
第2个回答  2010-01-23
manager .id是地址
第3个回答  2010-01-23
manager 是结构类型变量,不是数组变量,所以要取址运算符
相似回答