c语言 - 如何表达二维/多维数组和指针表达式之间的关系


#include<stdio.h>
void main()
{
       int a[2][2][2]={1,2,3,4,5,6,7,8};
       printf("%dt%d",*(*(*(a+1)+1)+1),a[1][1][1]);
}

代码的输出是 8 8,但表达式 *(*(*(a+i)+j)+k);a[i][j][k]; 相等 我知道如何进化表达式a[i][j][k];但我不知道如何使用*运算符和()运算符的适当优先级操作来发展表达式*(*(*(a+i)+j)+k);。请用一些i,j,k值来解释它。

在指针算术中,
array[i] = *(array + i) .
array[i][j] = *(*(array + i) + j) .
array[i][j][k] = *(*(*(array + i) + j) + k)

最初,a指向1。当你做a+1它移动到5,当你取消引用(*(时,你会导致下一个+1使其仅移动2个位置,到7。第二个 * 使第三个+1将其移动到最后一个元素 8 ,最后一个 * 实际上从该地址获取值(即 8(。

相关内容

  • 没有找到相关文章

最新更新