【发布时间】:2013-01-06 22:48:25
【问题描述】:
我必须使用 C 中的函数制作一个动态矩阵。我做了这个:
#include <stdio.h>
#include <malloc.h>
int r=3;
int c=3;
int i;
void matrix(int *** m)
{
m=(int***)malloc(r*sizeof(int*));
for(i=0; i<c;i++)
{
m[i]=(int**)malloc(c*sizeof(int));
}
};
int main()
{
int **mat;
matrix(&mat);
mat[0][0]=1;
mat[0][1]=2;
printf("%d %d", mat[0][0], mat[0][1]);
system("pause");
}
但它会崩溃说有问题。在哪里? :(
【问题讨论】:
-
问题出在代码中...
-
你不能在 C 中转换 malloc 的结果。
-
您应该始终在启用警告的情况下编译并注意所有警告。
-
必须链接到Three Star Programmer。
-
欢迎使用 Stack Overflow。请注意此处的其他 cmets 并阅读 FAQ 以了解有关好问题的更多信息。请注意,
matrix()函数后面的分号是不需要的。你不应该使用<malloc.h>;标准标题是<stdlib.h>。您不应该使用单字母全局变量;全局变量需要有意义的名称。您不应该使用全局变量i作为循环控制变量。您应该将数组大小传递给matrix()函数。您可能应该从函数中返回分配的矩阵,而不是传入要设置的指针。
标签: c function dynamic matrix malloc