回 帖 发 新 帖 刷新版面

主题:关于数组指针的问题

#include "stdio.h"
void main()
{
    //int i,j;
    //int *p;
    //char *p;
    //int **p;
    int b[2]={11,12};
    //int a[2][2]={1,2,3,4};
    int (*p)[2];
    p=b;
    //p=a;
    //for(i=0;i<2;i++)
    //    for(j=0;j<2;j++)
    //        printf("%d\n",*(*(p+i)+j));
}
问题:该情况可以运行,可以查看(*p)[0]=11,(*p)[1]=12。但是产生warning( C4047: '=' : 'int (*)[2]' differs in levels of indirection from 'int *'),是为什么呢?int (*p)[2];数组指针既然是一个指向含有两个整型元素的数组,为什么直接int (*p)[2]={11,12};不行呢?还有p=a(a为二维数组名);为什么就不会warning呢?

回复列表 (共1个回复)

沙发

p为二级指针,然后第一个问题和最后一个问题你懂了。

第一个问题导致第二个问题,转换下角度int **p;p[0]=11、、或者int *p;p=11\\这样行么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册