【发布时间】:2014-02-22 05:40:43
【问题描述】:
我在 main 中创建了一个动态矩阵,但后来决定最好实现一个函数,以便在必要时更容易创建更多。我将代码移向函数,但还不够好。
一旦我尝试写入 M[0][0],我的程序就会崩溃。
这是我的编译方式(没有错误): gcc -Wall -std=c99 -o output.exe source.c
#include <stdio.h>
#include <stdlib.h>
void MakeMATRIX (int** MATRIX, int* ROW, int* COL);
int main()
{
int SIZE;
scanf("%d", &SIZE);
int** M = NULL;
MakeMATRIX(M, &SIZE, &SIZE);
---MORE CODE GOES HERE---
scanf("%d", &M[0][0]);
return 0;
}
void MakeMATRIX (int** MATRIX, int* ROW, int* COL)
{
MATRIX = (int **)malloc(*ROW * sizeof(int*));
for (int i = 0; i < *ROW; i++)
{
MATRIX[i] = (int *)malloc(*COL * sizeof(int));
}
}
【问题讨论】:
-
您必须从 makeMatrix 函数返回 MATRIX 指针并将其分配给 M,否则您将指向 NULL。
-
哦,既然您指出了这一点,那就有道理了。感谢您,我设法解决了它!
标签: c arrays function pointers dynamic