关于二维数组的问题

ebeyondboy 2009-05-10 08:03:34
调用子函数,传递二维数组的问题:
void main()
{
int **x;
f(x);
}
void f(int ***x)
{
x=(int ***)malloc(10*sizeof(int));
*x[0][0]=1;
}
为什么错误啊?怎样才能自己分配二维数组,并赋值
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-05-10
  • 打赏
  • 举报
回复
void main() 
{
int **x;
f(&x); //这里要传一个三维的指针
}
void f(int ***x)
{
x=(int ***)malloc(10*sizeof(int*)); //给最外层指针赋值了,但是内部的两次仍然没有(应该继续分配)~
*x[0][0]=1;//这里直接使用未初始化的指针,非法访问错误~
}
lingyin55 2009-05-10
  • 打赏
  • 举报
回复
不好意思,这个忘记free了,free的时候也是一样,用一个循环free。
for (i=0; i <5; i++)
free(x[i]);
free(x);

至于你说的传参数的问题,可以看看这个帖子,讲的很详细,也有例子

http://topic.csdn.net/t/20041109/21/3537381.html

[Quote=引用 2 楼 lingyin55 的回复:]
int **x;
int i;

x = (int **)malloc(sizeof(int *)*5);
for (i=0; i <5; i++)
x[i] = (int *)malloc(sizeof(int)*3);
[/Quote]
arong1234 2009-05-10
  • 打赏
  • 举报
回复
两维尺寸都不知道的数组是不支持的,所以你要努力避免使用这种数组
看看http://blog.vckbase.com/arong/archive/2004/06/05/371.html
lingyin55 2009-05-10
  • 打赏
  • 举报
回复
int **x;
int i;

x = (int **)malloc(sizeof(int *)*5);
for (i=0; i<5; i++)
x[i] = (int *)malloc(sizeof(int)*3);
morris88 2009-05-10
  • 打赏
  • 举报
回复
貌似
void main() 
{
int **x;
f(&x);
}
void f(int ***x)
{
*x=malloc(10*sizeof(int));
x[0][0]=1;
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧