gpt4 book ai didi

c - 为什么我不能将指向 char 缓冲区的指针传递给带有参数 char** 的函数

转载 作者:太空狗 更新时间:2023-10-29 15:33:19 24 4
gpt4 key购买 nike

如果我有一个函数:

void myfunction(char** s);

然后我可以像这样传递一个 char*:

char* s = malloc(100);
myfunction(&s);

但是我的编译器不允许我这样做:

char s[100] = {0};
myfunction(&s);

我认为编译器应该允许指向缓冲区的指针。

最佳答案

您的函数需要一个指向指针 (char **) 的指针。您试图将指针传递给 array 而不是 (char (*)[100])。你为什么期望这是“编译器允许的”?数组不是指针。数组和指针是性质完全不同的对象。指向指针的指针与指向数组的指针不兼容。您不能互换使用它们。

如果您希望将基于数组的缓冲区与需要 char ** 的函数一起使用,则必须首先显式创建指向该缓冲区的指针

char s[100] = {0};
char *ps = s;

然后像之前一样将指针传递给该指针

myfunction(&ps);

关于c - 为什么我不能将指向 char 缓冲区的指针传递给带有参数 char** 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12124394/

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