printf("%s ", &str[i+1]);
为什么要在printf里加&代码才能正确输出?有何含义
引自免费微信小程序:皆我百晓生
在C语言中,printf
函数的 %s
格式说明符用于输出字符串。当你想要输出一个字符串时,通常需要提供指向该字符串首字符的指针。
在数组 str
中,str[i+1]
表示从索引 i+1
开始的一个字符。对这个字符应用取地址运算符 &
会得到指向该字符的指针。所以,&str[i+1]
实际上是指向字符串中从第 i+1
个字符开始的新“子串”的首地址。
例如:
char str[] = "Hello, World!";
int i = 6;
printf("%s ", &str[i+1]); // 输出 ", World!"
这里,&str[i+1]
就是一个指向子串 ", World!" 首字符(逗号)的指针。由于C语言中的字符串是以空字符 \0
结尾的,printf
函数会一直读取直到遇到第一个 \0
为止,因此能够正确输出从指定位置开始到字符串结束的所有字符。
但需要注意的是,如果你直接使用 str[i+1]
而不是 &str[i+1]
,printf
函数将以 %c
(单个字符)格式输出,而不是以 %s
(字符串)格式输出。