这两行代码相同吗??

line 1:

void (**foo)(int)

line 2

void *(*foo)(int)

请帮助我了解正在发生的事情.

推荐答案

他们不一样.

void (**foo)(int);

foo是指向函数的指针,该函数接受int参数并返回void.

void *(*foo)(int):

foo是指向函数的指针,该函数接受int参数并返回指向void的指针.

后缀运算符(如()[])的优先级高于一元*,因此

T *a[N];    // a is an array of pointer to T
T (*a)[N];  // a is a pointer to an array of T

T *f();     // f is a function returning pointer to T
T (*f)();   // f is a pointer to a function returning T

C++相关问答推荐

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

如何用C(使用两个s补数算术的32位程序)计算

如何使fputs功能提示错误输入并要求用户重新输入.程序停止而不是请求新的输入

为什么net/if.h在ifaddrs.h之前?

字符是否必须转换为无符号字符,然后才能与getc家族的返回值进行比较?

文件权限为0666,但即使以超级用户身份也无法打开

在Rust和C之间使用ffi时如何通过 struct 中的[U8;1]成员传递指针

一旦运行长度超过2,编译器是否会优化";strnlen(mystring,32)>;2";以停止循环?

将返回的char*设置为S在函数中定义的字符串文字可能会产生什么问题?

在进程之间重定向输出和输入流的问题

在C++中允许使用字符作为宏参数

合并对 struct 数组进行排序

宏观;S C调深度

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

当用C打印过多的';\n';时输出不正确

为什么孤儿进程在 Linux 中没有被 PID 1 采用,就像我读过的一本书中声称的那样?

模仿 memmove 的行为

C Makefile - 如何避免重复提及文件名

为什么实现文件中的自由函数默认没有内部链接?

仅使用其内存地址取消引用 C 中的 struct