gpt4 book ai didi

c - 传递给 void** 而不是 void* 会使编译器提示类型,为什么?

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

我不明白为什么编译器会警告我在此代码中传递不兼容的指针类型:(在这种情况下,void *void **)(我不知道这是否有所不同,但我使用的是 gnu99 C 版本)

void someFunc(void ** foo) {
printf("%s\n", *foo);
}

int main() {

char * text = "some text";
someFunc(&text);

return 0;
}

在此不

void someFunc(void * foo) { 
printf("%s\n", foo);
}

int main() {

char * text = "some text";
someFunc(text);

return 0;
}

提前致谢

最佳答案

void * 是一种可以与任何对象指针类型隐式转换的类型。 void ** 不是 - 因此虽然您可以将 char * 分配给 void *,但您可以char **void ** 做同样的事情。

原因是它们是不兼容的类型:char **指向一个char *void ** 指向 void *,因此它们的基类型不匹配。

关于c - 传递给 void** 而不是 void* 会使编译器提示类型,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18090893/

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