我想把一個指針傳給一個函數。在這個函數中我使用了malloc來保留空間。問題是當我在main函數中返回時,程序沒有響應。這裏是我的代碼Symplified公司:在函數裏面的malloc用法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int def(char **B){
int i;
B = malloc(3 * sizeof(char));
for(i = 0; i < 2 ; i++){
B[i] = malloc(5 * sizeof(char));
}
for(i = 0; i < 2 ; i++){
scanf("%s" , B[i]);
}
for(i = 0; i < 2 ; i++){
printf("%s\n" , B[i]);
}
return 0;
}
int main(int argc, char *argv[]) {
char **B;
int i;
def(B);
for(i = 0; i < 2 ; i++){
printf("%s\n" , B[i]);
}
return 0;
}
請縮進代碼; –
當你完成它時,你需要在指針上調用free()。 – Samuel
請勿使用幻數。如果您必須使用'#define'對代碼進行硬編碼,以便每個用法都引用單個定義。這樣一來,爲內存分配的元素數量就不會那麼容易,而且代碼將很容易維護。而且,你是否意識到只能在不受限制的'scanf'語句中輸入一個4個字符的字符串。 –