0 [str]在C中的含义是什么,其中str是一个字符串

时间:2015-08-11 06:48:12

标签: c arrays string

当我在C中学习字符串时,我遇到了以下代码

#include <stdio.h>

int main()
{
    char str[15] = "Hello, World";

    printf("str[0] = %c\n", str[0]);
    printf("*(str + 0) = %c\n", *(str + 0));
    printf("*(0 + str) = %c\n", *(0 + str));
    printf("0[str] = %c\n", 0[str]); /* This line 0[str] */

    return 0;
}

我能从程序中找到的简单事情是

str[0]将生成 H
*(str + 0)也会产生 H ,因为它使用指针运算
*(0 + str)*(str + 0)类似,也会产生 H

我无法弄清楚0[str]的含义是什么,以及它如何评估 H 。据我所知,[ ]符号代表一个数组,0不是数组。

1 个答案:

答案 0 :(得分:2)

查看下面的代码,

char str[10];

str将返回数组str[10]的起始地址。

因此,在您的示例*(str + i)中,将返回元素str[i]

str[i] = i[str]因为加法是可交换的。 由于*(str + i)*(i + str)相同,因为i + str = str + i

具体为0[str] = str[0],因为*(str+0) = *(0+str)。 因为str+0 = 0+str =str