c - 使用 void 时编译错误时 C 中的双指针错误

标签 c pointers double

我是 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/

相关文章:

Android:如何强制 TextToSpeech 说出句号 "."

c - Printf 符号解析

c++ - c++ vector中对象的指针问题

c++ - double 或 float,哪个更快?

c++ - 我的递归函数没有返回正确的值

c - 从指针访问数组会给出不断变化的错误值

c - 2D 数组索引分配

c++ - 本地时间()返回模棱两可

c - segmentation fault C 有限状态机

pointers - Dart编程中的链接列表,如何在Dart中处理指针或如何在堆上存储变量?