C语言二维指针 有一个二维指针**a,如何给它赋初值。

如题所述

不建议直接给指针赋值,除非是NULL;
二维指针也是指针,如你所写,a只不过是指向另一个指针的指针,归根结底还是指针,不因为它是多维的就会有什么变化;
例如:
int** a = NULL; //赋初值为空,这样做绝对是好习惯
或者:
int a;
int* b = &a;
int** c = &b;
再或者就是个二维数组:
int a[ 10 ][ 10 ];
int** b = a; //其实a就是一个二维指针
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-01
int **a,x = 3, y = 4;
a = new int*[x];
for (int i = 0;i < x; i++)
{
a[i] = new int[y];
}
下面就可以像a[3][4]一样赋初值了追问

如果想用完以后释放内存,应该怎么做?麻烦你了……

追答

for (i = 0; i < x; i++)
{
delete [] a[i];
}
delete [] a;

追问

使用new函数还需要别的条件么?编译提示我“new”未定义。是不是需要什么头文件?谢谢!

本回答被提问者采纳
第2个回答  2012-06-01
int a=3;
int *p=&a; // p中存放了a的地址
int **pp=&p; //pp中存放了p的地址
第3个回答  2012-06-01
//**a不是二维指针,是指向指针的指针,可以如下面形式赋值。
int b[3][2];
int **a=&b[0][0];
相似回答