康建
C语言及Python中两括号并一起的语法理解
2022-1-23 12:39
阅读:2893

C语言及Python中出现两括号并一起的情况,如 pfun(-5)(20),都是合法的表示,其实就是函数调用中又用另外的函数做了参数,C语言中涉及函数指针的概念。写如下两示例协助理解:

//C语言

#include "stdafx.h"

int rfun1(int x)

{ printf("rfun1:\n");

  return x+x; 

}

int rfun2(int x)

{ printf("rfun2:\n");

  return x*x;

}

int (*pfun(int r))(int x)

{   printf("%d\n",r);

if(r>0)

    return rfun1;

else

return rfun2;

  return 0;

}

int main(int argc, char* argv[])

   printf("%d\n", pfun(-5)(20));

   printf("%d\n", pfun(5)(20));

return 0;

}


#python示例:

def pfun(r):

    print(r)        

    def rfun1(x):

        print("rfun1:")

        return x+x

    def rfun2(x):

        print("rfun2:")

        return x*x

    if r>0:

        return rfun1

    else:

        return rfun2

    

print(pfun(-5)(20))

print(pfun(5)(20))


运行结果都是:

-5

rfun2:

400

5

rfun1:

40


在C语言中,int (*pfun(int r))(int x){ ... }表示定义了一个函数pfun,其返回类型是指向函数的指针型,其自身参数是int型r。由pfun返回的值是函数,这个返回的函数应该int型并且需要有int型参数x。


这些机制在编写复杂程序时可能用得上。如人工神经网络中连接两个层可能用到:x=Dense(,...)(inputs)

转载本文请联系原作者获取授权,同时请注明本文来自康建科学网博客。

链接地址:https://m.sciencenet.cn/blog-797552-1322289.html?mobile=1

收藏

分享到:

当前推荐数:3
推荐人:
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?