我做了 2 个项目,第一个用 C 语言,第二个用 C++ 语言,两者都具有相同的行为。
C项目:
头文件.h
int varGlobal=7;
主程序
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
void function(int i)
{
static int a=0;
a++;
int t=i;
i=varGlobal;
varGlobal=t;
printf("Call #%d:\ni=%d\nvarGlobal=%d\n\n",a,i,varGlobal,t);
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
C++项目:
头文件.h
int varGlobal=7;
主文件
#include <iostream>
#include "header.h"
using namespace std;
void function(int i)
{
static int a=0;
int t=i;
a++;
i=varGlobal;
varGlobal=t;
cout<<"Call #"<<a<<":"<<endl<<"i="<<i<<endl<<"varGlobal="<<varGlobal<<endl<<endl;
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
我读到全局变量在默认情况下是外部变量,在 C 中是外部变量,在 C++ 中默认是静态的;那么为什么 C++ 代码有效呢?
我的意思是int varGlobal=7; 与静态 int varGlobal=7 相同;如果它是静态的,那么它只能在它声明的文件中使用,对吧?