在函數(shù)內(nèi)部初始化的數(shù)組不可以直接返回,因?yàn)樗鼤?huì)在函數(shù)調(diào)用完隨著這個(gè)函數(shù)的生命周期結(jié)束而銷毀。
所以需要用malloc()來(lái)初始化。以初始化一個(gè)n*m數(shù)組為例
int** functionName() {
int** as = (int **)malloc(sizeof(int*) * n);
for(int i = 0; i < m; i++) {
as[i] = (int*)malloc(sizeof(int) * m);
}
return as;
}
同樣的,如果是結(jié)構(gòu)體
typedef struct AA {
int a;
}A;
AA** functionName() {
AA** as = (AA **)malloc(sizeof(AA*) * n);
for(int i = 0; i < m; i++) {
as[i] = (AA*)malloc(sizeof(AA) * m);
}
return as;
}