Tôi đã tạo 2 dự án, một dự án đầu tiên trong C và là dự án thứ hai trong C++, cả hai đều hoạt động với cùng một hành vi.biến toàn cầu tĩnh và bên ngoài trong C và C++
C dự án:
header.h
int varGlobal=7;
main.c
#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;
}
++ Dự án C:
header.h
int varGlobal=7;
main.cpp
#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;
}
Tôi đọc mà các biến toàn cục là extern theo mặc định và trong C và tĩnh theo mặc định trong C++; vậy tại sao mã C++ hoạt động?
Ý tôi là int varGlobal = 7; giống với static int varGlobal = 7; và nếu nó tĩnh thì nó chỉ có thể được sử dụng trong tệp mà nó đã khai báo, đúng không?
lưu ý đầu tiên là 'include' chỉ cần sao chép-bột nhão nội dung. Vì vậy, đối với ví dụ tập tin như vậy, nó cần được loại bỏ để đơn giản hóa. –