【问题标题】:Segmantation fault when trying to access array of character pointers尝试访问字符指针数组时出现分段错误
【发布时间】:2017-05-31 20:15:12
【问题描述】:

所以我创建了一个处理 char 指针数组的函数 通过使用 [] 运算符。 函数

int fetchargs(char **argv){
argv[0][0] = 'A';     
};

会导致分段错误。 我传递了一个按如下方式初始化的字符指针数组

char argv[ARG_NUM][MAX_LINE];

试图找出原因,但没有成功

可能是什么问题?

【问题讨论】:

  • char[][]char** 不同
  • int fetchargs(char **argv){ --> int fetchargs(int col_size, char argv[][col_size]){ , 致电fetchargs(MAX_LINE, argv);
  • 哇!当然不一样..可能是小时.. char[][] 是一个字符矩阵

标签: c


【解决方案1】:

char ** argv 是一个指向字符指针的指针double pointer
argv[ARG_NUM][MAX_LINE] 本质上是一个二维字符数组

这里的底线是尊重数据类型

char argv[ARG_NUM][MAX_LINE];
.........
.........
int fetchargs(char argv[][MAX_LINE]){
  argv[0][0] = 'A'; 
  return 0;  
};

【讨论】:

    【解决方案2】:

    这就是你应该将它传递给函数的方式,因为它不是char **。您必须删除大括号后的;

    /*Dim is your ARG_NUM and dim2 MAX_LINE*/
    int fetchargs(int dim1,int dim2,char pass[][MAX_LINE]){
        /*Some stuff*/
        return 1;
    }/*You've a semicolon here*/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2020-03-26
      相关资源
      最近更新 更多