C/C++中,函数体内定义的变量具有函数作用域,无法在外部使用这个变量本身.由于这种定义式在栈内存分配空间,变量一旦被创建,函数结束后就会被自动销毁,因此也称为自动(auto)变量. 如果要在多个函数中共享变量,那么可以使用作用域为全局/编译单元的静态变量.这些变量定义后,在进程开始时自动创建,进程结束时自动销毁. 例如 int a = 2; static int b = 7; int f() { a = 3; b = 4; } int g() { a = 5; b = 6; } 另外一种间接的方案是,用自动变量定义指针,然后用指针指向malloc/new方式获得的堆空间变量,堆空间中的变量是全局的,且需要手动释放空间. PS.注意用extern声明的变量只是声明,没有被定义.如果整个工程中的文件都没有另外定义这些变量的话,编译器可以编译通过但链接器会报错. ==== [原创回答团]