首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于在函数中定义变量的问题.

关于在函数中定义变量的问题.

有个以前只用C++的朋友对下面的程序不解.
int func1(int)
{
    //...
}

int func2(int)
{
    //...
}

void    main(void)
{
    int a,c;
    c = func1(a);
    int b,d;//这里定义变量是非法的,在C++中是允许的.
    d = func2(b);
}
在ANSI"C"中定义变量,必须在一个函数的开始部分.
以上的 int b,d; 的定义是非法的.
但真的就不能在函数的中间定义变量?
能.象下面这样就可以.
用个大括号对定义一个程序块,在这个块中可以定义变量.

void    main(void)
{
    int a,c;
    c = func1(a);
    {
        int b,d; // ok,现在这样是合法的.
        d = func2(b);
    }
}
但是...
b,d只是在那个程序块中可见,所以下面的程序有点问题.
void    main(void)
{
    int a,c;
    int e;
    c = func1(a);
    {//<1>
        int b,d;
        d = func2(b);
    }//<2>
    e = d; // d只是在那个块中(<1>-<2>之间),所以 这里编译错误, d未定义.
}
呵呵,一般情况下都是这样:你获得某些便利的同时,肯定会失去某些效用,不是吗?
返回列表