当前位置:  开发笔记 > 编程语言 > 正文

嵌套函数在C中意味着什么?

如何解决《嵌套函数在C中意味着什么?》经验,为你挑选了1个好方法。

支持词法嵌套函数的众所周知的语言包括:

基于ALGOL的语言,如ALGOL 68,Simula,Pascal,Modula-2,Modula-3,Oberon和Ada.

现代版本的Lisp(带有词法范围),如Scheme和Common Lisp.

ECMA脚本(JavaScript和ActionScript).

Scala全力支持

脚本语言中的各种程度的支持,例如Ruby,Python和Perl(从版本6开始).

还有一种带有嵌套函数的C语言,D语言.

GCC还支持C语言中的嵌套函数,作为语言扩展.1

从Fortran-90开始,Fortran支持一级嵌套(CONTAINed)子例程和函数.

在您的情况下,功能s将只在其中可用t.

嵌套函数是在另一个函数内定义的函数.(GNU C++不支持嵌套函数.)嵌套函数的名称是定义它的块的本地名称.例如,这里我们定义一个名为square的嵌套函数,并调用它两次:

 foo (double a, double b)
 {
   double square (double z) { return z * z; }

   return square (a) + square (b);
 }

嵌套函数可以访问在其定义点可见的包含函数的所有变量.这称为词汇范围.例如,这里我们展示了一个嵌套函数,它使用一个名为offset的继承变量:

 bar (int *array, int offset, int size)
 {
   int access (int *array, int index)
     { return array[index + offset]; }
   int i;
   /* ... */
   for (i = 0; i < size; i++)
     /* ... */ access (array, i) /* ... */
 }

在允许变量定义的地方的函数内允许嵌套函数定义; 也就是说,在任何块中,与块中的其他声明和语句混合.

请参阅"嵌套函数 - 使用GNU编译器集合(GCC)"



1> 小智..:

支持词法嵌套函数的众所周知的语言包括:

基于ALGOL的语言,如ALGOL 68,Simula,Pascal,Modula-2,Modula-3,Oberon和Ada.

现代版本的Lisp(带有词法范围),如Scheme和Common Lisp.

ECMA脚本(JavaScript和ActionScript).

Scala全力支持

脚本语言中的各种程度的支持,例如Ruby,Python和Perl(从版本6开始).

还有一种带有嵌套函数的C语言,D语言.

GCC还支持C语言中的嵌套函数,作为语言扩展.1

从Fortran-90开始,Fortran支持一级嵌套(CONTAINed)子例程和函数.

在您的情况下,功能s将只在其中可用t.

嵌套函数是在另一个函数内定义的函数.(GNU C++不支持嵌套函数.)嵌套函数的名称是定义它的块的本地名称.例如,这里我们定义一个名为square的嵌套函数,并调用它两次:

 foo (double a, double b)
 {
   double square (double z) { return z * z; }

   return square (a) + square (b);
 }

嵌套函数可以访问在其定义点可见的包含函数的所有变量.这称为词汇范围.例如,这里我们展示了一个嵌套函数,它使用一个名为offset的继承变量:

 bar (int *array, int offset, int size)
 {
   int access (int *array, int index)
     { return array[index + offset]; }
   int i;
   /* ... */
   for (i = 0; i < size; i++)
     /* ... */ access (array, i) /* ... */
 }

在允许变量定义的地方的函数内允许嵌套函数定义; 也就是说,在任何块中,与块中的其他声明和语句混合.

请参阅"嵌套函数 - 使用GNU编译器集合(GCC)"

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有