我想把一个指针传给一个函数。在这个函数中我使用了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个字符的字符串。 –