Jis*_*han 24 c arrays pointers
我遇到了一个有竞争力的问题,询问以下内容的输出:
#include <stdio.h>
int main()
{
int a[] = {0,1,2,3,4};
int i, *ptr;
for(ptr = a+4, i=0; i <=4; i++)
printf("%d", ptr[-i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我确实读过这个话题:C中是否允许使用负数组索引?然而,我不清楚-ve符号如何以相反的顺序生成数组,即.4, 3, 2, 1, 0.
das*_*ght 25
首先,回想一下,在C中,表达式ptr[index]意味着与之相同*(ptr+index).
现在让我们再看一下你的表达式:ptr设置为a+4循环之前; 然后你应用-i索引.因此,等效指针算术表达式如下:
printf("%d", *(a+4-i));
Run Code Online (Sandbox Code Playgroud)
此表达式向后迭代数组,生成您看到的结果.
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |