c语言问题 scanf()不加&问题

这个问题在哪里,不是有个什么scanf(“%s”,a); 那里a前面不加地址符& 输入有个字符串的吗?
#include<stdio.h>
#include<string.h>
void main(void)
{
char q;
scanf("%s",q);
printf("%s",q);
}

这种写法是错误的,scanf的调用格式为: scanf("<格式化字符串>",<地址表>);
第二个参数是地址,要用取地址符&
如果a是一个数组,那么数组名本身(a)就代表了数组a的首地址,这本身就是一个地址了
但q是一个char型的变量,不是数组,因此要用&q取q的地址
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-09
#include<stdio.h>
#include<string.h>
void main(void)
{

char *q=new char;
scanf("%s",q);
printf("%s",q);
}

#include<stdio.h>
#include<string.h>
void main(void)
{
char q[10];
scanf("%s",q);
printf("%s",q);
}

不想采用&这个符号就需要指明变量地址,采用数组或者指针
这是正确答案,请采纳
第2个回答  2012-06-09
如果 q 是数组 不要加地址

如果是 字符变量 就必须加地址

原因 你以后会知道

scanf("%c",q);

或者

char q[20];
scanf("%s",q);
第3个回答  2012-06-09
那要看a本身表示的是地址还是值了.
如 int a;这里的a表示一个int型的变量,所以需要加&进行取地址操作
int a[5];这里的a表示数组名,而数组名本身又可以表示其数组的首地址,这里的a就不需要&进行取地址操作了.

c语言问题 scanf()不加问题
这种写法是错误的,scanf的调用格式为: scanf("格式化字符串",地址表);第二个参数是地址,要用取地址符 如果a是一个数组,那么数组名本身(a)就代表了数组a的首地址,这本身就是一个地址了 但q是一个char型的变量,不是数组,因此要用q取q的地址 ...

c语言中,scanf语句里面什么时候要加&,什么时候不要加&?
1. 在C语言中,使用`scanf`函数进行输入时,如果变量是整型(`int`)或者其他基本数据类型,你需要在变量前加上`&`来获取其地址。这是因为`scanf`需要读取变量的内存地址,以确保数据被正确地存储到该变量中。2. 当你使用指针变量时,情况就不同了。因为指针本身存储的就是另一个变量的地址,所以在...

为什么在C语言中,用scanf输入字符串时,不需加&
因为字符串变量名在 scanf 语句里 表示指针 (地址)例如:char s[80];scanf("%s",s); --- 这里的s 已是地址。当然,写成 scanf("%s",&s[0] ); 也可以, &s[0] 是地址。

为什么在C语言中在调用scanf()为字符数组输入字符串时,输入项是数组名...
scanf输入普通变量时,要求通知计算机输入变量所在的地址是多少,所有加&符号表示相应变量的地址;而输入字符串时,数组名恰好是字符串的首地址,或者说数组的首地址,所有只需要写数组名即可,不需要加&符号

为什么C语言Scanf函数对字符串不要加 取地址运算符&
C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。数据类型 字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中...

C语言中scanf(“%s”,m);m前面为什么不用加&??
scanf(“%s”,m);\/\/首先scanf这个函数是按照一定的输入格式从标准输入窗口获取数据,并将其赋值给变量;这里%s 是指输入一个字符串,而此处的m 即是一个字符串变量名,其本身就表示字符串m的首地址;因此无须再加取地址符&;printf("%d%f%s",a,b); \/\/这里没有完整写出参数列表,控制格式与...

C语言中scanf后面,什么情况下不加符号&
float) ,后面的argument一定要是地址类型变量,当变量名就是对应的指针变量时,就不需要加&符号了。 &是地址运算符,意思是获得变量的地址。如:char str[100];int i;scanf("%s", str ); \/\/str本身就是地址,所以,不需要加& scanf("%d", &i ); \/\/i不是指针变量,必须要加地址 ...

c语言中,scanf语句里面什么时候要加&,什么时候不要加&?
这里所说的其实就是一个地址 所以当变量是一个指针或者表示一个地址时就不中& &就是求地址的运算符 如数组名是数组第一权个元素的地址 所以数组名就可以不用加&进行运算 比如 int a;int *p=&a;scanf("%d",p);则不需要使用&运算符

scanf(“%s%s”,a,b );中不用&a,&b也可以吗?
scanf(“%s%s”,a,b );中不用&a,&b也是可以的。因为定义的字符数组名a,b本身就代表数组a和b的首地址,所以,使用 scanf(“%s%s”,a,b );和scanf(“%s%s”,&a,&b );是等价的。

c语言 scanf函数()里 什么时候可用& 什么时候不用??
这里所说的其实就是一个地址 所以当变量是一个指针或者表示一个地址时就不中& &就是求地址的运算符 如数组名是数组第一个元素的地址 所以数组名就可以不用加&进行运算 比如 int a;int *p=&a;scanf("%d",p);则不需要使用&运算符

相似回答