gpt4 book ai didi

c - 将双指针传递给函数以在 C 中获取字符串

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:43 25 4
gpt4 key购买 nike

这是我的代码:

我正在尝试使用双指针通过 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 会导致段错误?

感谢您的回答。

最佳答案

%s 需要一个 char *。不要取消引用 main() 中的指针。它不是双指针,它已经是正确的类型。您最好将其重命名为 pointer,以免混淆。

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

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

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

关于c - 将双指针传递给函数以在 C 中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50238081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com