如果我有一个函数:
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/