主题:关于数组指针的问题
#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呢?
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呢?