【问题标题】:C modify char** with strcpy [duplicate]C用strcpy修改char** [重复]
【发布时间】:2016-07-26 09:10:40
【问题描述】:

我现在对指针有点困惑,有人可以向我解释为什么尝试用strcpy() 更改char** 导致segmentation fault 的原因吗?

void *change_string(char **string) {
 char *add = "Changed!";
 strcpy(*string, add);
 return 0;
}

int main() {
 char *p = "Original-";
 change_string(&p);
 printf("%s",p);
}

【问题讨论】:

  • 我被简单地给出了“分段错误”
  • char *p = "Original-" 应该是char *p = strdup("Original-"),如果不是,修改p 是一个未定义的行为

标签: c string strcpy


【解决方案1】:

您的指针p 指向一个字符串文字,并且您在调用strcpy(3) 时修改该字符串。修改字符串文字是未定义的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多