为您找到"
为什么 char s[30]; scanf("%s", s); 不用 & 也可以?
"相关结果约100,000,000个
数组名代表数组的首地址,是一个指针,所以不用加&符号。如果是引用数组的元素,就必须得加&符。还有字符串是随机址分配。
后面的argument一定要是地址类型变量,当变量名就是对应的指针变量时,就不需要加&符号了。 &是地址运算符,意思是获得变量的地址。如:char str[100];int i;scanf("%s", str ); //str本身就是地址,所以,不需要加& scanf("%d", &i ); //i不是指针变量,必须要加地址 ...
C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。数据类型 字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中...
可以观察到,arr[0]并未存入字符,t的数值比预期少1 原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf(“%c”,...);又会把'\n'当一个字符接收,又...
你要知道scanf的输入后面的的地址,如果你输入的时候本身符号就表示地址的时候那不要&,否则就要& 举个例子:int a;char ch;scanf("%d",&a);scanf("%c",&ch);这里的a是一个整型数,不是地址符号就要& char str[10];scanf("%s",str);此时str是地址符号,表示字符串的首地址,因此不需要& ...
因为s是指针,所以s才是地址,*s是指向的char类型内容 所以要用scanf("%s",s);不过在用之前先要给s初始化,让其合法,例如让s指向一个字符串数组,不然s是个空指针。
STR其实就是表示这个字符串的首地址了。我们在SCANF中使用&,是指将值放入这个地址中,现在已经是地址了,当然不需要了。如果你一定要用的话,可以改成scanf("%s",&str[0]).不过我突然想到我以前用过的情况,在一个结构变量中有一个成员是字符串,我用不用&都不报错,也不知道为什么。
char str[9] = "testing";printf("str:[%c] str address:[%p] Pstr:[%p]\n", *str, str, &(*str)); //看明白了这个你就理解了数组的含义。scanf("%s", str); //str是一个字符数组,它本身就是字符串的首地址。既然是地址编译器就能识别。
scanf(“%s”,m);//首先scanf这个函数是按照一定的输入格式从标准输入窗口获取数据,并将其赋值给变量;这里%s 是指输入一个字符串,而此处的m 即是一个字符串变量名,其本身就表示字符串m的首地址;因此无须再加取地址符&;printf("%d%f%s",a,b); //这里没有完整写出参数列表,控制格式与...
scanf后跟%s是读不进回车的 他只把回车当停止符留在缓冲区,scanf读回车要用%c,也只有%c能读。