怎样定义一个存放指向数组的指针的数组/**/#include int main(){\x09int a[2][2] = {{1,2},{3,4}};\x09int b[2][2]= {{5,6},{7,8}};\x09int (*p1)[2] = a;\x09\x09\x09//定义了一个指向一维数组的指针\x09int (*p2)[2] = b;\x09\x09\x0

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 13:21:43

怎样定义一个存放指向数组的指针的数组/**/#include int main(){\x09int a[2][2] = {{1,2},{3,4}};\x09int b[2][2]= {{5,6},{7,8}};\x09int (*p1)[2] = a;\x09\x09\x09//定义了一个指向一维数组的指针\x09int (*p2)[2] = b;\x09\x09\x0
怎样定义一个存放指向数组的指针的数组
/*
*/
#include
int main()
{
\x09int a[2][2] = {{1,2},{3,4}};
\x09int b[2][2]= {{5,6},{7,8}};
\x09int (*p1)[2] = a;\x09\x09\x09//定义了一个指向一维数组的指针
\x09int (*p2)[2] = b;\x09\x09\x09//定义了一个指向一维数组的指针
\x09//int ((*q)[2])[2] = {p1,p2}; //本来想这样定义的,可是不能通过编译,
\x09//int ___q____ = {p1,p2}; //请帮助填一个正确的定义 :这行q的前后应该怎么填
\x09//printf("%d\n",*(*q[1]+1)); //应该结果是6
\x09return 0;
}

怎样定义一个存放指向数组的指针的数组/**/#include int main(){\x09int a[2][2] = {{1,2},{3,4}};\x09int b[2][2]= {{5,6},{7,8}};\x09int (*p1)[2] = a;\x09\x09\x09//定义了一个指向一维数组的指针\x09int (*p2)[2] = b;\x09\x09\x0
以下代码在VC6.0以上版本测试通过!
输出结果:6
#include
int main(void)
{
int a[2][2] = {{1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int (*p1)[2] = a;
int (*p2)[2] = b;
int (*q[2])[2] = {p1, p2}; 这样才是正确的定义!
printf("%d\n", *(*q[1]+1));
return 0;
}
但在tc2.0和bc3.1中提示非法初始化!
但把
int (*q[2])[2] = {p1, p2};
改成
int (*q[2])[2];
q[0] = p1;
q[1] = p2;
可以通过!
原因暂不清楚,估计是老旧的编译器不支持太复杂的定义!
其实最好的方法是使用typedef,简单明了,可读性大大提升!
#include
int main(void)
{
typedef int (*PA)[2]; 使用typedef
int a[2][2] = {{1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int (*p1)[2] = a;
int (*p2)[2] = b;
PA q[2]= {p1, p2}; 这样可读性是否大大的增加?!
printf("%d\n", *(*q[1]+1));
return 0;
}