我是 C 的新手,目前正在学习指针。
我不确定为什么我在以下有关指针的代码部分中遇到错误:
char ch;
char** pointer;
pointer = &ch;
和
int function1(void)
{
return 42.0;
}
void function2(void)
{
void (*pointer)(int);
pointer = &function1;
...
}
任何帮助将不胜感激:)
最佳答案
第一个问题是您在 char** pointer
中使用双指针,因为您没有存储其他指针的地址,所以您应该使用 char *pointer
代替。
然后你的 function1 返回类型为 int
但你返回一个 float
值,虽然它不会给你任何错误但它可以在你的程序中产生一些逻辑问题,所以最好在函数定义及其原型(prototype)中正确编写返回类型。
那么下一个问题是在 function2
中,您的 function1
返回 int
但不接受任何参数,但是您的函数指针返回 void 并接受 int ,所以你最好将其修改为
int (*pointer)(void);
然后将function1
的地址存入pointer
中,就可以正常工作了。
关于c - 使用 void 时编译错误时 C 中的双指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51856431/