打印数组字符串的方法

时间:2015-06-28 09:51:28

标签: c++ c

#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;在第二行?

2 个答案:

答案 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]