结构体的指针问题
[例10.6]从键盘输入两个学生数据,写入一个文件中, 再读出这两个学生的数据显示在屏幕上。
#include <stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen( "stu_list ", "wb+ "))==NULL)
{
printf( "Cannot open file strike any key exit! ");
getch();
exit(1);
}
printf( "\ninput data\n ");
for(i=0;i <2;i++,pp++)
scanf( "%s%d%d%s ",pp-> name,&pp-> num,&pp-> age,pp-> addr);
pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);
rewind(fp);
fread(qq,sizeof(struct stu),2,fp);
printf( "\n\nname\tnumber age addr\n ");
for(i=0;i <2;i++,qq++)
printf( "%s\t%5d%7d%s\n ",qq-> name,qq-> num,qq-> age,qq-> addr);
fclose(fp);
}
各位大大,我看了上面的程序有点问题不明白
为什么scanf( "%s%d%d%s ",pp-> name,&pp-> num,&pp-> age,pp-> addr);
stirng就不用&符号,而int就用,什么意思啊?pp不就代表结构体的地址了吗?
printf( "%s\t%5d%7d%s\n ",qq-> name,qq-> num,qq-> age,qq-> addr);
而这个全部不要...不解...望各位告诉我吧 谢谢
[解决办法]
char name[10];
这种变量里,name代表了变量的首地址,所以不需要&