第一个因为是字符串数组,这里的scanf("%s",a);中的a既是一个地址,也是一个数组变量名,也可以是一个指向字符型变量的指针,不过前面有%s,所以可以说 定义时:char a[50]第二个是一般变量 &在这里: 为取地址运算符定义时:int a
scanf表示将什么样类型的数据(比如%d整形)输入到某个地址中(比如&a是一个地址)。如果没有加&那么他本身就可以代表一个地址,可以不用加。比如char ch[20]={0};scanf("%s",ch);ch变量是字符数组变量,它的名字代表数组在内存中的首地址,所以不用加
前者a是个字符串,也就是char a[10],a本来就是一个地址,因此不需要取地址符号&后者,你写错了,应该是scanf("%d", &a); 这里的a是一个整型变量,也就是int a,因此需要取它的地址,需要&符号 追问 那这个% 是不是可有可无?