怎样定义一个存放指向数组的指针的数组/**/#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/07/08 14:55:13
![怎样定义一个存放指向数组的指针的数组/**/#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](/uploads/image/z/8651077-61-7.jpg?t=%E6%80%8E%E6%A0%B7%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E5%AD%98%E6%94%BE%E6%8C%87%E5%90%91%E6%95%B0%E7%BB%84%E7%9A%84%E6%8C%87%E9%92%88%E7%9A%84%E6%95%B0%E7%BB%84%2F%2A%2A%2F%23include+int+main%28%29%7B%5Cx09int+a%5B2%5D%5B2%5D+%3D+%7B%7B1%2C2%7D%2C%7B3%2C4%7D%7D%3B%5Cx09int+b%5B2%5D%5B2%5D%3D+%7B%7B5%2C6%7D%2C%7B7%2C8%7D%7D%3B%5Cx09int+%28%2Ap1%29%5B2%5D+%3D+a%3B%5Cx09%5Cx09%5Cx09%2F%2F%E5%AE%9A%E4%B9%89%E4%BA%86%E4%B8%80%E4%B8%AA%E6%8C%87%E5%90%91%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E6%8C%87%E9%92%88%5Cx09int+%28%2Ap2%29%5B2%5D+%3D+b%3B%5Cx09%5Cx09%5Cx0)
怎样定义一个存放指向数组的指针的数组/**/#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;
}