我有一个我用来构建字符串数组的函数。在函数内部我可以打印数组而不用担心程序从被调用函数返回,数组(arr)保持为NULL。 如何从数组中获取数据?
感谢。
main(){
char **arr = NULL;
funct(arr);
printf("%s\n", arr[2];
}
funct(char **arr){
arr = malloc(10*sizeof(char *));
arr[1...n] = calloc(SIZE, sizeof(char));
// Add data to array
}
答案 0 :(得分:2)
我可以在你的代码中看到几个问题:
printf("%s\n", arr[2];
行中)
arr
函数本地的main
变量永远不会被初始化。在C中,参数按值传递意味着您将NULL
指针传递给函数,并且在此函数内部,本地指针arr
被分配但不是main
函数之一解决方案是在main
函数中分配数组,并将指针传递给数组,并将大小传递给填充它的函数:
main(){
char **arr = malloc(10*sizeof(char *));
funct(arr, 10);
printf("%s\n", arr[2]);
}
funct(char **arr, int size){
// Add data to array
arr[0] = "first data";
....
arr[size -1] = "last data";
}