1。声明与定义:声明是向编译器介绍名字---标识符。而定义为名字分配存储空间。 定义也可以是声明。如果定义int x;之前,编译器没有发现标识符x,编译器则把这一标识符看成是声明并立即为它分配存储空间。我们常用的写法,int i;就属于这种"定义是声明的"情况,纯粹的变量声明应该使用extern关键字。函数声明extern可以省略,因为编译器可以通过函数名后面跟的是;还是{来判断是声明还是定义。
2。名字空间是十分方便和有用的工具,但名字空间的出现意味着在写程序之前,必须知道它们。如果只是简单的包含头文件,使用头文件中的一些函数或对象,编译时,可能会遇到一些奇怪的错误,确切地说,如果仅仅只包含头文件,编译器无法找到任何有关函数和对象的声明。在多次看到编译器的这种提示后,我们会熟悉他所代表的含义(即:虽然包含了头文件,但所有的声明应该都在一个名字空间中,而没有告诉编译器我们想要用哪个名字空间)
3。函数,局部变量,全局变量存储地址
#include <iostream>
using namespace std;
int dog, cat, bird, fish;
void f(int pet){
cout << "pet id number: " << pet << endl;
}
int main(int argc, char *argv[]){
int i, j, k;
cout << "f(): " << (long)&f << endl;
cout << "dog: " << (long)&dog << endl;
cout << "cat: " << (long)&cat << endl;
cout << "bird: " << (long)&bird << endl;
cout << "fish: " << (long)&fish << endl;
cout << "i: " << (long)&i << endl;
cout << "j: " << (long)&j << endl;
cout << "k: " << (long)&k << endl;
system