C语言中 用scanf函数输入字符串数组,取地址符&是不用输的,如果输了取地址符算错么 ,或者含义不一样么?
不一样。
C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。
数组名就代表了该数组的地址。整个数组是一块连续的内存单元,数组名所代表的地址为第0个元素的地址,c就代表c[0]的地址。
设数组c的首地址为0X2000,也就是说c[0]地址为0X2000,则数组名c就代表这个首地址。因为c已经表示地址,所以在c前面不能再加取地址符&。
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。
扩展资料
为了避免这种情况,可多设几个字符数组分段存放含空格的串。程序可改写如下:
#include<stdio.h>
intmain()
{
char str1[20], str2[20], str3[20];
printf("Input string: ");
scanf("%s %s %s %s",str1,str2, str3);
printf("Your string: %s %s %s %s\n",str1, str2, str3);
}
运行结果:
Input string: C C++ Java
Your string: C C++ Java