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



这是我的代码:

我试图用双指针通过 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

相关内容

  • 没有找到相关文章

最新更新