跳动百科

定义一个指针指向变量a(定义一个指针指向数组)

卞颖晶
导读 大家好,我是小跳,我来为大家解答以上问题。定义一个指针指向变量a,定义一个指针指向数组很多人还不知道,现在让我们一起来看看吧!以下

大家好,我是小跳,我来为大家解答以上问题。定义一个指针指向变量a,定义一个指针指向数组很多人还不知道,现在让我们一起来看看吧!

以下代码在VC6.0以上版本测试通过!

输出结果:6

#include <stdio.h>

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 ", *(*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 <stdio.h>

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 ", *(*q[1]+1));

return 0;

}

本文到此讲解完毕了,希望对大家有帮助。