为什么我的指针无法指出二维数组

img

应该你第二层for没有加 { }

#include <iostream>
using namespace std;
int main()
{
    int a[2][3] = { 2,3,4,556,6,6 };
    int(*p)[3] = a;
    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            cout << "value = " << *(*(p+i)+j) << endl;
        }
    }
}

效果:

img


#include <stdio.h>
#include <math.h>
void main()
{
    int a[2][3] = {1, 2, 3, 4, 5, 6};
    int i, j;
    int(*p)[3] = a;
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%d ", *(*(p + i) + j));
        }
    }
}

#include<stdio.h>
int main()
{
      int a[2][3]={2,3,4,556,6,6};
      int i,j;
      int (*p)[3]=a;
      for(i=0;i<2;i++){
          for(j=0;j<3;j++){
              printf("%d",*(*(p+i)+j));   
          }
      }
    return 0;
}

输出结果:

img


修改后如下:

#include<stdio.h>
int main()
{
      int a[2][3]={{2,3,4},
                  {556,6,6}};
      int i,j;
      int (*p)[3]=a;
      for(i=0;i<2;i++){
          for(j=0;j<3;j++){
              printf("%5d",*(*(p+i)+j));  //修改格式为%5d 设置域宽为5
          }
          printf("\n"); //输出换行
      }
    return 0;
}

修改后输出结果如图:

img

希望对题主有所帮助,望采纳!!