Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
0[str]在C中是什么意思,其中str是字符串_C_Arrays_String - Fatal编程技术网

0[str]在C中是什么意思,其中str是字符串

0[str]在C中是什么意思,其中str是字符串,c,arrays,string,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

当我学习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;
}
#包括
int main()
{
char str[15]=“你好,世界”;
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]);/*此行0[str]*/
返回0;
}
从这个程序中我能想到的简单的事情是

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


我搞不清楚的是
0[str]
是什么意思,以及它如何计算为H。据我所知,
[]
符号代表一个数组,而
0
不是数组。

根据下面的代码

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

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

因为加法是可交换的。 因为
*(str+i)
*(i+str)
是相等的,因为
i+str=str+i

特别是
0[str]=str[0]
,因为
*(str+0)=*(0+str)

因为
str+0=0+str=str

虽然从这个角度看这是重复的,但是
+0
的目的是什么?或者这是一个不幸的价值观?