繁体   English   中英

c中的`int(*)(int)`对于类型是什么意思?

[英]What does `int (*)(int)` in c mean with regard to type?

我有这个C代码(灵感来自测试)

#include <stdio.h>

int foo (int n)
{
    static int s = 0;
    return s += n;
}

int main()
{
    int y;
    int i;

    for (i=0; i<5; i++) {
        y= foo(i);
    }

    printf("%d\n", foo);

    return 0;
}

我特别感兴趣的是foo的价值以及它的类型。 编译器给了我这个警告

test.c:18:16: warning: format specifies type 'int' but the argument has type
      'int (*)(int)' [-Wformat]

但我不确定这意味着什么。 什么是int (*)(int)以及如何在没有参数的情况下调用函数名称会给我一些这种类型的东西?

如果没有函数调用, foo计算一个指向函数的指针,该函数接受一个int并返回一个int 这是int (*)(int)的长描述。

你不是在叫foo 要调用foo ,请在名称后面放置(argument) 实际上,你获取foo地址 ,它的类型为int (*)(int) (指向函数的指针获取一个整数参数并返回一个int)并将其发送到printf

printf然后抱怨,因为你试图告诉它打印一个int ,但给它一个函数指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM