【问题标题】:Passing a double pointers to a function to get a string in C将双指针传递给函数以获取 C 中的字符串
【发布时间】:2018-05-08 16:15:38
【问题描述】:

这是我的代码:

我正在尝试通过带有双指针的 void 函数传递字符串。

void modify(char** double_pointer) {
    //define a char pointer 
    char* pointer = malloc(5*sizeof(char));
    strcpy(pointer, "test");
    printf("%s\n", pointer);                       //prints test

    // point double_pointer to pointer
    double_pointer = malloc(sizeof(char*));
    *double_pointer = pointer;
    printf("%s\n", *double_pointer);              //prints test
}

int main() {
    //pointer to a pointer
    char* double_pointer = NULL;
    modify(&double_pointer);
    printf("%s\n", *double_pointer);              // seg. fault
}

为什么在 main 中打印 *double_pointer 会导致分段错误?

感谢您的回答。

【问题讨论】:

    标签: c pointers segmentation-fault


    【解决方案1】:

    %s 需要 char *。不要取消引用main() 中的指针。它不是双指针,它已经是正确的类型。您最好将其重命名为pointer,这样您就不会混淆自己了。

    int main() {
        char* pointer = NULL;
        modify(&pointer);
        printf("%s\n", pointer);
    }
    

    另外,在modify() 中,您不应该为double_pointer 分配内存。

    // point double_pointer to pointer
    double_pointer = malloc(sizeof(char*));
    *double_pointer = pointer;
    printf("%s\n", *double_pointer);              //prints test
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2015-06-03
      • 2014-06-20
      • 1970-01-01
      • 2013-06-12
      • 2020-07-02
      • 1970-01-01
      相关资源
      最近更新 更多