关于指向二维数组的指针的问题
假如有二维数组
int a[3][4];
要定义一个指向他的指针,查了一下,方法好像是这样
int (*p)[4];
但是这是再数组a的维度已知的情况下
那如果
int a[i][j];
的情况下要如何定义呢?比方说i,j都由其他函数决定。
谢谢
int a[3][4];
要定义一个指向他的指针,查了一下,方法好像是这样
int (*p)[4];
但是这是再数组a的维度已知的情况下
那如果
int a[i][j];
的情况下要如何定义呢?比方说i,j都由其他函数决定。
谢谢
作者: crucifyhcy 发布时间: 2011-06-13
p不是指向a的指针,而是指向a的首元素的指针,如果有p = a;的话。
指向a的指针是这样的:int ( *p )[3][4] = &a;
如果是int a[i][j],这是VLA,可变长数组,目前只有C99才支持VLA,一个指向VLA的指针称为VM,即可变改类型,是这样的:int ( *p )[i][j] = &a;在赋值的同时,p类型派生中的i和j的值要与a定义时的i和j的值相等,否则两者是不相容的,不能赋值。
指向a的指针是这样的:int ( *p )[3][4] = &a;
如果是int a[i][j],这是VLA,可变长数组,目前只有C99才支持VLA,一个指向VLA的指针称为VM,即可变改类型,是这样的:int ( *p )[i][j] = &a;在赋值的同时,p类型派生中的i和j的值要与a定义时的i和j的值相等,否则两者是不相容的,不能赋值。
作者: supermegaboy 发布时间: 2011-06-13
int a[3][4];
int (*p)[4] = a[0];
p = a[1];
p = a[2];
p是指向(有三个int元素的)数组的指针,
对于a[i][j]维数未知情况下不能定义指向数组的指针。
int (*p)[4] = a[0];
p = a[1];
p = a[2];
p是指向(有三个int元素的)数组的指针,
对于a[i][j]维数未知情况下不能定义指向数组的指针。
作者: dizuo 发布时间: 2011-06-13
C/C++ code
int i=10; int j=10; int **a=new int*[i]; for (int index=0;index<i;index++) { a[index]=new int[j]; }
作者: Demon__Hunter 发布时间: 2011-06-13