void t(){
printf("hello\n");
void s(){
printf("2\n");
}
}
int main(){
t();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我打电话后t(),s应该定义,但似乎并非如此.
它被忽略了吗?
小智 6
在您的情况下,功能s将只在其中可用t.
嵌套函数是在另一个函数内定义的函数.(GNU C++不支持嵌套函数.)嵌套函数的名称是定义它的块的本地名称.例如,这里我们定义一个名为square的嵌套函数,并调用它两次:
foo (double a, double b)
{
double square (double z) { return z * z; }
return square (a) + square (b);
}
Run Code Online (Sandbox Code Playgroud)
嵌套函数可以访问在其定义点可见的包含函数的所有变量.这称为词汇范围.例如,这里我们展示了一个嵌套函数,它使用一个名为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) /* ... */
}
Run Code Online (Sandbox Code Playgroud)
在允许变量定义的地方的函数内允许嵌套函数定义; 也就是说,在任何块中,与块中的其他声明和语句混合.
| 归档时间: |
|
| 查看次数: |
762 次 |
| 最近记录: |