导航

signal函数

#include <signal.h>
  • signal函数
void (*signal(int signo, void (*func)(int)))(int)
    • 返回值是函数指针
      • void (*)(int)
    • signal两个参数
      • signo
      • void (*func)(int)
    • 等价于
typdef void (*tRet)(int);

tRet signal(int signo, void (*func)(int));

tRet signal(int signo, tRet func);
    • 分解
      • 不考虑返回值,即 函数名+参数列表
signal(int signo, void (*func)(int))    <==>    A
      • 返回值为tRet
tRet A;

void (*A)(int);

void (*signal(int signo, void (*func)(int)))(int);
    • 当返回值为int时
int add(int a, int b)
{
    return a+b;
}

int main()
{
    int sum = add(3, 5);
    add(3, 5);
    8;
    return 0;
}
    • 当返回值为函数指针时
typedef void (*tOutput)(int);

void oput(int i)
{
        printf("This is for test: %d.\n", i);
}

tOutput test(int i, tOutput func)
{
    func(i);
    return func;
}


int main()
{
    tOutput func = test(1, oput);
test(2, oput); func(
5); return 0; }

 输出:

This is for test: 1.
This is for test: 2.
This is for test: 5.

 

posted on 2021-04-25 17:59  toughcactus  阅读(82)  评论(0编辑  收藏  举报