0[str]在C中是什么意思,其中str是字符串
当我学习C语言中的字符串时,我遇到了以下代码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
#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
的目的是什么?或者这是一个不幸的价值观?