scanf的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:09:54
typedef struct information
{
int numb; /*航班号*/
char starttime[10]; /*起飞时间*/
char begin[21]; /*起始站*/
char end[21]; /*终点站*/
float lasttime; /*飞行时间*/
int canload; /*载客量*/
int alreadyload; /*已订票人数*/
}INFORMATION;

scanf("%s%s%s%f%d%d", info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload);

请问scanf("%s%d",a,&b);可以像这样写吗?传字符串后面不加&,传数字后面加&?? 不加&一样可以运行。

&运算符表示 取地址
scanf()函数从第二个参数开始都应该是要输入数据的地址
字符串名(数组名)本来就是字符串的首地址,所以不用加&
其他类型的变量需要加&

scanf后面的要求的是地址,所以对于你的INT类型的数要加&,至于为什么你那个字符串不用加呢?
因为你这样定义的,这样使用的时候就代表是你的字符串的首地址