gpt4 book ai didi

c - 在 C 中, * 用作函数参数时是否也与 void 表示相同的意思?

转载 作者:太空狗 更新时间:2023-10-29 15:14:03 26 4
gpt4 key购买 nike

例如,查看以下(抽象)声明:

int (*) (*)

//指向返回 int 且不带参数的函数的指针

(我从以下网站获得:http://www.vineetgupta.com/blog/deciphering-complex-c-declarations)

我认为只有 void 意味着没有参数。这真的意味着同样的事情吗:

int (*) (void)

如果是这样,它在哪里声明 * 可用于指定无参数?

此外,我是否正确地假设像这样的抽象声明只存在于类型转换中?如果是这样,那么它的当前形式一定是无效的,因为它缺少周围的括号吗?所以 int(*)(void) 是无效的,但是 (int(*)(void)) 是有效的,不是吗?

最佳答案

pointer to a function returning an int and taking no arguments

这不对 - 该函数采用指针作为其参数,但由于缺少类型说明符,指针的基类型被假定为 int。这是古老的(标准前)行为,一些编译器允许,另一些则不允许。

I thought that only void means no arguments. Does this really mean the same thing as :

int (*) (void)

不,不是,原因如上所述。

Also, am I correct in assuming that abstract declarations such as this only exist for type casting?

不,它们也可以在函数声明中的函数参数列表中使用。所以,

int factorial(int);

非常好,也是

void qsort(void *, size_t, size_t, int (*)(const void *, const void *));

关于c - 在 C 中, * 用作函数参数时是否也与 void 表示相同的意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17759909/

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