char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
1 s与&s都表示地址,且值相等。2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);
2024-03-29 13:49:04
char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
1 s与&s都表示地址,且值相等。2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针。3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&s);