这是我的代码:
我试图用双指针通过 void 函数传递字符串。
void modify(char** double_pointer) {
//define a char pointer
char* pointer = malloc(5*sizeof(char));
strcpy(pointer, "test");
printf("%sn", pointer); //prints test
// point double_pointer to pointer
double_pointer = malloc(sizeof(char*));
*double_pointer = pointer;
printf("%sn", *double_pointer); //prints test
}
int main() {
//pointer to a pointer
char* double_pointer = NULL;
modify(&double_pointer);
printf("%sn", *double_pointer); // seg. fault
}
为什么在主打印 *double_pointer 会导致分割错误?
感谢您的回答。
%s
期望char *
。不要取消引用main()
中的指针。那里不是双指针,它已经是正确的类型。您最好将其重命名为pointer
这样您就不会混淆自己。
int main() {
char* pointer = NULL;
modify(&pointer);
printf("%sn", pointer);
}
另外,在modify()
中,您不应该为double_pointer
分配内存。
// point double_pointer to pointer
double_pointer = malloc(sizeof(char*));
*double_pointer = pointer;
printf("%sn", *double_pointer); //prints test