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 (字符串)格式输出。