有关指针的问题
以int a[3][4]为例,我们知道,要想定义一个指针变量能够指向数组名,那么应该定义成int (*p)[4];这个时候语句p=a;就不会出错,现在我大胆的猜想一下,如果我定义一个指针数组是这样的int (*p[2])[4],那么是不是怕p[0]能够指向一个列标为4的二维数组,p[1]可以指向另外一个列标为4的二维数组(这两个二维数组的行标可能不同)也就是说,这样的程序我能不能实现:#include "stdio.h"
int main()
{
int a[3][4]={24,23,22,21,20,19,18,17,16,15,14,13};
int b[4][4]{16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int (*p[2])[4];
p[0]=a;//p[0]指向数组a的数组名;
p[1]=b;//p[1]指向数组b的数组名;
printf("%d,%d",*(*p[0]),*(*p[1]));
return 0;
}
结果发现我的程序是编译不了的,提示一下错误,我用的是DEVC++;
D:\DEVC++\dev编译产生的文件\未命名1.cpp In function 'int main()':
5 12 D:\DEVC++\dev编译产生的文件\未命名1.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
上面的问题是我想到的,也许我的猜想纯属瞎想,不过我想大家都思考思考。这样定义是逻辑上的错误还是其他方面的。大家参与参与