如何理解*(*(a+i)+j) *(a[i]+j) *(a+i)[j] *(a+3*i+j) 的含义以上都是程序中的一部分

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 19:38:01

如何理解*(*(a+i)+j) *(a[i]+j) *(a+i)[j] *(a+3*i+j) 的含义以上都是程序中的一部分
如何理解*(*(a+i)+j) *(a[i]+j) *(a+i)[j] *(a+3*i+j) 的含义
以上都是程序中的一部分

如何理解*(*(a+i)+j) *(a[i]+j) *(a+i)[j] *(a+3*i+j) 的含义以上都是程序中的一部分
前两个都可以表示a[i][j] 的值
我不是大牛,这是我的看法.如果a是一维数组,你可以认为*(a+i)是实际元素的值,但a是二维数组,你可以把二维数组当做一维数组,其中的每个元素又是一个数组.*(a+i)表示的是第i行首元素的地址.也就是a[i][0]的地址,自然*(a+i)+j表示a[i][0]后j个位置的地址.*(*(a+i)+j)也就表示为a[i][j]的值了.
给你段现编的代码:运行下自己理解下.
#include
using namespace std;
int main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i=1,j=1;
int (*p)[3];//Pointer points to an array of arrays defined
p=a;
cout