[b]第一部分:变量的声明和定义[/b]
变量的声明:声明变量的类型和名字,但不分配存储空间。定义也是声明(这是许多人搞不清楚的地方)。
变量的定义:指明变量的类型和名字,为变量分配存储空间。另外变量的初始化,是指在变量的定义出给出值。
一般的情况下我们常常这样叙述,把不需要分配存储空间的称之为"声明",而把分配存储空间称之为"定义"。
注意:在C++语言中,变量有且只能有一次定义,但是可以声明多次。使用变量前必须定义或声明。
那既然变量的定义就是声明,为啥还要再多出来个变量的声明这个概念,直接就用变量的定义不是就可以了?
其实不然,C++中有个关键字是用来声明变量的,它是extern。它声明一个变量却不定义它,即不再给它一个存储空间。
例如:int i;//定义也可以说是声明
extern int i;//这就是单纯的声明
假设我们在文件1.cpp中定义了一个全局变量bufsize,文件1.cpp中当然可以访问它,如果我想在另外一个文件2.cpp中访问这个全局变量,这时候需要在文件2.cpp中声明这个变量。
//1.cpp
int bufsize;
//2.cpp
extern int bufsize;
这说的是非const的全局变量,如果是const的全局变量,如果想要被其他文件访问,需要在定义的时候,加上extern关键字,表示它可以在其他文件被声明使用的,即可以被整个程序(一个程序可能包括多个源文件)访问,否则的话,这个变量只能在它被定义的文件里面被访问,其他文件不能访问。
//1.cpp
extern const int bufsize=10;
//2.cpp
extern const int bufsize;
这时候你也许会问,为什么非const变量定义的时候为什么没有extern?
答:非const变量默认为extern。而const变量如果想要在其他文件里被访问,必须显示的指定它为extern。
[b]第二部分:方法的声明和定义[/b]
//方法的声明
void get(char *s);
//方法的定义
void get(char *s)
{
...
return;
}
最后指出:
定义:DEFINE
声明,有时也作说明:DECLARE
变量的声明:声明变量的类型和名字,但不分配存储空间。定义也是声明(这是许多人搞不清楚的地方)。
变量的定义:指明变量的类型和名字,为变量分配存储空间。另外变量的初始化,是指在变量的定义出给出值。
一般的情况下我们常常这样叙述,把不需要分配存储空间的称之为"声明",而把分配存储空间称之为"定义"。
注意:在C++语言中,变量有且只能有一次定义,但是可以声明多次。使用变量前必须定义或声明。
那既然变量的定义就是声明,为啥还要再多出来个变量的声明这个概念,直接就用变量的定义不是就可以了?
其实不然,C++中有个关键字是用来声明变量的,它是extern。它声明一个变量却不定义它,即不再给它一个存储空间。
例如:int i;//定义也可以说是声明
extern int i;//这就是单纯的声明
假设我们在文件1.cpp中定义了一个全局变量bufsize,文件1.cpp中当然可以访问它,如果我想在另外一个文件2.cpp中访问这个全局变量,这时候需要在文件2.cpp中声明这个变量。
//1.cpp
int bufsize;
//2.cpp
extern int bufsize;
这说的是非const的全局变量,如果是const的全局变量,如果想要被其他文件访问,需要在定义的时候,加上extern关键字,表示它可以在其他文件被声明使用的,即可以被整个程序(一个程序可能包括多个源文件)访问,否则的话,这个变量只能在它被定义的文件里面被访问,其他文件不能访问。
//1.cpp
extern const int bufsize=10;
//2.cpp
extern const int bufsize;
这时候你也许会问,为什么非const变量定义的时候为什么没有extern?
答:非const变量默认为extern。而const变量如果想要在其他文件里被访问,必须显示的指定它为extern。
[b]第二部分:方法的声明和定义[/b]
//方法的声明
void get(char *s);
//方法的定义
void get(char *s)
{
...
return;
}
最后指出:
定义:DEFINE
声明,有时也作说明:DECLARE