代码之家  ›  专栏  ›  技术社区  ›  J.Doe

向函数传递双指针以获取C中的字符串

  •  0
  • J.Doe  · 技术社区  · 6 年前

    这是我的代码:

    我正在尝试通过带有双指针的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\u指针会导致分段错误?

    谢谢你的回答。

    1 回复  |  直到 6 年前
        1
  •  3
  •   John Kugelman Michael Hodel    6 年前

    %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