关于结构体和共用体用scanf输入时加&获取地址
- C/C++ code
#include<stdio.h>struct{ int num; char name[10]; char sex; char job; union { int clas; char position[10]; }category;}person[2];int main(){ int i; for(i=0;i<2;i++) {printf("please enter the data of person\n"); scanf("%d %s %c %c",[color=#FF0000]&person[i].num,&person[i].name,&person[i].sex,&person[i].job[/color]); if(person[i].job=='s') scanf("%d",[color=#FF0000]&person[i].category.clas[/color]); else if(person[i].job=='t') scanf("%s",[color=#FF0000]person[i].category.position[/color]); else printf("input error"); } printf("\n"); printf("No. name sex job class/position\n"); for(i=0;i<2;i++) { if(person[i].job=='s') printf("%-6d%-10s%-4c%-10d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.clas); else printf("%-6d%-10s%-4c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position); } getch(); return 0; }
为什么上面有些用有些不用啊? 请解释一下。 谢谢
[解决办法]
- C/C++ code
char name[10];//当是数组的时候,数组名代表的就是数组的首地址,所以可以不用加,也可以加,上面的&person[i].name和person[i].category.position就可以看得出来