输入函数scanf 有时有"&" 有时没有?

哪位知道,输入函数scanf 有时有"&" 有时没有?
最新回答
璎婲

2024-11-29 08:46:04

第一个因为是字符串数组,这里的
scanf("%s",a);中的a既是一个地址,也是一个数组变量名,也可以是一个指向字符型变量的指针,不过前面有%s,所以可以说 定义时:char a[50]

第二个是一般变量

&在这里: 为取地址运算符
定义时:int a
毒药

2024-11-29 11:40:16

scanf表示将什么样类型的数据(比如%d整形)输入到某个地址中(比如&a是一个地址)。
如果没有加&那么他本身就可以代表一个地址,可以不用加。
比如
char ch[20]={0};
scanf("%s",ch);
ch变量是字符数组变量,它的名字代表数组在内存中的首地址,所以不用加
错在情深

2024-11-29 11:47:06

前者a是个字符串,也就是char a[10],a本来就是一个地址,因此不需要取地址符号&
后者,你写错了,应该是scanf("%d", &a); 这里的a是一个整型变量,也就是int a,因此需要取它的地址,需要&符号
追问
那这个% 是不是可有可无?
春夜浅

2024-11-29 10:31:17

scanf函数需要传入地址,&取地址。
scanf("%s",a);

a是一个数组,数组名a表示这个数组的首地址。
scanf("%d,&a");

这里的a是int型的,&取地址