所以我有一個程序在C結構化的3個文件中:main,alloc.h和alloc.c: 在主我有一個指向另一個指針,我打算alloc的指針decclaration一個*米陣列:二維數組函數的動態分配
#include <stdio.h>
#include <stdlib.h>
#include "alloc.h"
int main()
{
int **mat,n,m;
alloc_matrix(&mat,int &n,int &m);
return 0;
}
在alloc.ci具有以下聲明:
#ifndef ALLOC_H_INCLUDED
#define ALLOC_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
void alloc_matrix(int***,int*,int*);
#endif
在alloc.ci具備的功能:
void alloc_matrix(int ***mat,int *n,int *m)
{
printf("\nn = "); scanf("%d", n);
printf("\nm = "); scanf("%d", m);
*mat = (int**)calloc(*n,sizeof(int*));
int i;
for(i = 0; i < *n; i++)
*(mat+i) = (int*)calloc(*m,sizeof(int));
}
但程序不起作用。它進入某種循環並沒有結束。 如果我將它分配在main
它會工作,但我不知道我在做什麼錯誤在alloc
函數。
沒有二維數組,也沒有指向一個或一個可以代表一個的指針!作爲一名三星級C程序員並不是一種恭維。 – Olaf
如果這是你的代碼:請不要糾正它在問題中的錯誤。如果不是,請使用* actual *代碼重新發布整個問題。 –
'alloc_matrix(&mat,int&n,int &m);'這是不合法的C.你使用什麼編譯器? –