Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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
数组索引方法是一个棘手的问题 #包括 int main(){ int buff[]={1,2,3,4,5,6,9,10}; 字符c=(buff+1)[5]; printf(“%d\n”,c);//输出为9 返回0; }_C_Arrays_Pointers - Fatal编程技术网

数组索引方法是一个棘手的问题 #包括 int main(){ int buff[]={1,2,3,4,5,6,9,10}; 字符c=(buff+1)[5]; printf(“%d\n”,c);//输出为9 返回0; }

数组索引方法是一个棘手的问题 #包括 int main(){ int buff[]={1,2,3,4,5,6,9,10}; 字符c=(buff+1)[5]; printf(“%d\n”,c);//输出为9 返回0; },c,arrays,pointers,C,Arrays,Pointers,有人能解释清楚这是怎么发生的以及为什么发生的吗?回忆一下: 在C中,方括号[]是隐式的*(…) 您提供的代码片段中发生的事情并不是显而易见的指针算法。这一行: #include<stdio.h> int main() { int buff[] = {1,2,3,4,5,6,9,10}; char c = (buff+1)[5]; printf("%d\n",c);//output is 9 return 0; } 。。。等同于以下(按C标准): 。。。它指向数组中的第7个元素(第

有人能解释清楚这是怎么发生的以及为什么发生的吗?回忆一下:

在C中,方括号
[]
是隐式的
*(…)


您提供的代码片段中发生的事情并不是显而易见的指针算法。这一行:

#include<stdio.h>
int main() {
int buff[] = {1,2,3,4,5,6,9,10};
char c = (buff+1)[5];
printf("%d\n",c);//output is 9
return 0;
}
。。。等同于以下(按C标准):

。。。它指向数组中的第7个元素(第6个位置)并取消对它的引用。它应该输出9,而不是19

备注:

按照关于方括号的说明,重要的是要看到以下内容是等效的

char c = *( ( buff + 1 ) + 5 );

。。。完全有效的指针运算。

我想它一定是9。@Krishnasundar,为以后的指针运算的磨合添加了另一个重要的注释。好吧,如果两个加法算作“非常聪明”,那么我一定是理解乘法的真正天才…@H2CO3,这个问题的提出是聪明的(所以这并不明显)。我会修正我的措辞,使之泄气。
' '[ "]; i < 0; i++; while ( 1 ); do something awesome (y)." ];
arr[ n ] <=> n[ arr ]
' '[ "]; i < 0; i++; while ( 1 ); do something awesome (y)." ];
{1,    2,  3,  4,  5,  6,  9,  10};
 |     |
 buff  buff+1 = {2, 3, 4, 5, 6, 9, 10} (say buff_1)
                                |
 buff_1[5]    =                 9