printf那行,为什么string指针前面不加*,取值运算符
int main()
{
char str;
char *string = str;
printf("请输入一个字符串:");
fgets(str,100,stdin); //读取输入的字符串
// scanf("%s",str); 字符串
printf("%s", string); //读字符串
return 0;
}
因为输出字符串就是先取它的首地址,然后一直到/0;
比如你平时输出一个字符串,printf(“%s”,str),其实str的名字就是str的首地址(和数组差不多) 个人理解的意思是:
char str;
str 是一个一维数组,根据数组的特性 str 数组名指向的是它的第一个元素的首地址
char *string = str;
将str的首地址赋值给了指针变量 string,
而 %s是输出 一个字符串的,从 str的首地址开始直到'\0'(字符串是以\0 为结束符的)
所以string 只是给了printf 一个字符串的开头,然后 它自动往后搜索 结束符\0,
以上为个人理解,言语比较白话 %s对应的是地址,它接受地址,不是值 string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,printf() 函数的控制符是 %s ,要求最后输出的是整个字符串,而不是单个字符;
* 在运算的时候,用在变量前是表示取这个变量所指向的地址的值,printf() 函数的控制符改为 %c ,string 改为 *string 输出的则是字符串的第一个字符。 haoiyang 发表于 2020-9-7 17:16
因为输出字符串就是先取它的首地址,然后一直到/0;
比如你平时输出一个字符串,printf(“%s”,str),其 ...
是只有字符串这样吗 风过无痕1989 发表于 2020-9-8 00:46
string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,printf() 函数的控制符是 %s ,要求最后 ...
请受我一拜,大哥
页:
[1]