注册 登录
编程论坛 C++教室

我是个编程新手,帮个忙!

发布于 2010-05-02 10:01, 502 次点击
#include <iostream>
using namespace std;
int i=1;
int main()
{
    static int a;
    int b=-10;
    int c=0;
   
    cout<<"---MAIN---\n";
    cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;
    void other(void);
    c=c+8;other();
    cout<<"---MAIN---\n";
    cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;
    i=i+10;other();}   
void other(void)
{
    static int a=2;
    static int b;
    int c=10;
    a=a+2;i=i+32;c=c+5;
    cout<<"---OTHER---\n";
    cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;
    b=a;
}
上面这个程序怎么读啊?两个other()在这里是什么意思啊?   
5 回复
#2
2010-05-02 10:59
只是调用副函数而已,“void other(void);”是函数的声明,i是全局变量,所以每次操作都是有保留的,另外在副函数中,由于变量类型是static,所以副函数中的a b在文件结束时才释放空间,所以也将操作保留了下来,而c不是静态的,所以每次调用other都会重置c=10,就有了最后的输出结果
#3
月光3212010-05-02 11:24
静态变量与动态变量的区别!
#4
2010-05-02 17:13
void other(void);
   c=c+8;other();
上面这句是什么意思?

#5
2010-05-03 01:31
因为你的other函数是在main函数之后定义的,所以使用时必须先声明,所以void other(void);其实是一个函数的声明,只有声明过后,才能被编译器识别,不然会报错。c=c+8,就是让c自加8,other();就是执行other函数,这时因为void other(void);即对函数的声明,才可以执行函数other()。
#6
2010-05-03 11:58
懂了,谢了
1