LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1140|回复: 3

问一个数组指针的问题

[复制链接]
发表于 2010-2-25 13:31:53 | 显示全部楼层 |阅读模式
int * a1[2];
int (*a2)[2];
a2=a1;//这会出错,原因是类型不匹配
这里我说一下我的理解,a1是一个int*类型的数组,拥有两个元素。a2是一个指针,指向一个有两个元素的int型数组,这里的不匹配是可以理解的。不过我改了一下变量的定义还不是行,我就不理解了,如下:
int* a1[2];
int* (*a2)[2];
a2=a1;
发表于 2010-2-25 13:57:33 | 显示全部楼层
int **a2;
回复 支持 反对

使用道具 举报

发表于 2010-2-25 13:58:51 | 显示全部楼层
int *(*a2)[2],这个a2仍然是一个指向数组的指针,只不过数组变成了int *型,即包含两个int型指针的数组。
回复 支持 反对

使用道具 举报

发表于 2010-2-25 15:10:16 | 显示全部楼层
这样写就可以。顺便可以用来跟函数指针用法对照着看。
  1. typedef int* (*a_array_t)[2];
  2. typedef int* (*a_func_t)( int);
  3. static int* a_func_inst( int x)
  4. {
  5.         return 0;
  6. }
  7. int main()
  8. {
  9.         int* a1[2];
  10.         a_array_t a2;
  11.         a_func_t a3;
  12.         a2 = &a1;
  13.         a3 = a_func_inst;
  14.         a3 = &a_func_inst;
  15.         return 0;
  16. }
复制代码
虽然有点离题,不过函数指针的话,加不加&都一样。但对于数组,就不同了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表