【发布时间】:2021-02-23 05:12:37
【问题描述】:
#include <stdio.h>
int main()
{
int a[] = {1, 2, 3};
printf("%d", 0[a]);
printf("\n%d", 2[a]);
return 0;
}
输出:
1
3
我知道如何使用索引访问数组元素,但是上面的语法如何在两种情况下访问第一个值并添加前缀数字?
【问题讨论】:
#include <stdio.h>
int main()
{
int a[] = {1, 2, 3};
printf("%d", 0[a]);
printf("\n%d", 2[a]);
return 0;
}
输出:
1
3
我知道如何使用索引访问数组元素,但是上面的语法如何在两种情况下访问第一个值并添加前缀数字?
【问题讨论】:
在 C 中,数组和指针有相似之处。当您访问数组元素array[3] 时。这相当于:
*(array + 3) // Dereferencing the 3rd index from beginning
同样,当您尝试像3[array] 一样访问它时,语句如下:
*(3 + array) // Identical to the first example
这是相同的。最后,当你想获取数组N[array]的第N个元素时,语法变为:
*(N + array)
这就是您获得预期输出的原因。
【讨论】: