在c中传递字符串数组

时间:2014-03-23 10:31:34

标签: c arrays

我有一个我用来构建字符串数组的函数。在函数内部我可以打印数组而不用担心程序从被调用函数返回,数组(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
}

1 个答案:

答案 0 :(得分:2)

我可以在你的代码中看到几个问题:

    您在printf("%s\n", arr[2];行中
  1. 忘记了结束)
  2. arr函数本地的main变量永远不会被初始化。在C中,参数按值传递意味着您将NULL指针传递给函数,并且在此函数内部,本地指针arr被分配但不是main函数之一
  3. 解决方案是在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";
    }