#include <stdio.h>
int main(){
char arr[] = "HelloWorld";
printf("%s\n", arr+3); //first line
printf("%s\n", &arr[4]); //second line
return 0;
}
有人可以向我解释以下内容吗?
1)为什么第一行的输出= loWorld?
2)为什么第二行的输出= oWorld?
3)为什么需要放置&amp;在第二行?
答案 0 :(得分:6)
您的数组就像
一样构建---------------------------------------------
| H | e | l | l | o | W | o | r | l | d |\0 |
---------------------------------------------
| | | |
arr arr+1 arr+3 &arr[4]
所以%s
打印字符串直到遇到\0
个字符。您正在从arr+3
打印到字符串结尾。
请注意,arr+1
与&arr[1]
相同,arr+2
与&arr[2]
等相同。
&arr[4]
将给出字符串中第5个元素的地址(指针为arr+4
),%s
从字符串打印字符串直到字符串结尾。
答案 1 :(得分:0)
&
表示获取变量的地址。arr
与&arr
和&arr[0]
arr+3
等于&arr[3]
和arr[3]