目錄
數(shù)據(jù)類型
基本數(shù)據(jù)類型
typedef 聲明
枚舉類型
類型轉(zhuǎn)換
變量類型
變量定義
變量聲明
左值(Lvalues)和右值(Rvalues)
變量作用域
數(shù)據(jù)類型
基本數(shù)據(jù)類型
C++ 為程序員提供了種類豐富的內(nèi)置數(shù)據(jù)類型和用戶自定義的數(shù)據(jù)類型。下表列出了七種基本的 C++ 數(shù)據(jù)類型:
類型 | 關(guān)鍵字 |
---|---|
布爾型 | bool |
字符型 | char |
整型 | int |
浮點(diǎn)型 | float |
雙浮點(diǎn)型 | double |
無類型 | void |
寬字符型 | wchar_t |
類型修飾符:signed、unsigned、short、long
注:一些基本類型可以使用一個(gè)或多個(gè)類型修飾符進(jìn)行修飾,比如:signed short int簡寫為short、signed long int 簡寫為long。
下表顯示了各種變量類型在內(nèi)存中存儲(chǔ)值時(shí)需要占用的內(nèi)存,以及該類型的變量所能存儲(chǔ)的最大值和最小值。
注意:不同系統(tǒng)會(huì)有所差異,一字節(jié)為 8 位。默認(rèn)情況下,int、short、long都是帶符號(hào)的,即 signed。long int 8 個(gè)字節(jié),int 都是 4 個(gè)字節(jié),早期的 C 編譯器定義了 long int 占用 4 個(gè)字節(jié),int 占用 2 個(gè)字節(jié),新版的 C/C++ 標(biāo)準(zhǔn)兼容了早期的這一設(shè)定。
類型 | 位 | 范圍 |
---|---|---|
char | 1 個(gè)字節(jié) | -128 到 127 或者 0 到 255 |
unsigned char | 1 個(gè)字節(jié) | 0 到 255 |
signed char | 1 個(gè)字節(jié) | -128 到 127 |
int | 4 個(gè)字節(jié) | -2147483648 到 2147483647 |
unsigned int | 4 個(gè)字節(jié) | 0 到 4294967295 |
signed int | 4 個(gè)字節(jié) | -2147483648 到 2147483647 |
short int | 2 個(gè)字節(jié) | -32768 到 32767 |
unsigned short int | 2 個(gè)字節(jié) | 0 到 65,535 |
signed short int | 2 個(gè)字節(jié) | -32768 到 32767 |
long int | 8 個(gè)字節(jié) | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 個(gè)字節(jié) | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 個(gè)字節(jié) | 0 到 18,446,744,073,709,551,615 |
float | 4 個(gè)字節(jié) | 精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,+/- 3.4e +/- 38 (~7 個(gè)數(shù)字) |
double | 8 個(gè)字節(jié) | 雙精度型占8 個(gè)字節(jié)(64位)內(nèi)存空間,+/- 1.7e +/- 308 (~15 個(gè)數(shù)字) |
long double | 16 個(gè)字節(jié) | 長雙精度型 16 個(gè)字節(jié)(128位)內(nèi)存空間,可提供18-19位有效數(shù)字。 |
wchar_t | 2 或 4 個(gè)字節(jié) | 1 個(gè)寬字符 |
注意,各種類型的存儲(chǔ)大小與系統(tǒng)位數(shù)有關(guān),但目前通用的以64位系統(tǒng)為主。
以下列出了32位系統(tǒng)與64位系統(tǒng)的存儲(chǔ)大小的差別(windows 相同):
typedef 聲明
typedef是C和C++語言中的一個(gè)關(guān)鍵字,用于給一個(gè)已有的數(shù)據(jù)類型起一個(gè)新的別名。typedef可以提高代碼可讀性和可維護(hù)性。
typedef的語法如下:
typedef existing_type new_type_name;
其中,existing_type代表要起別名的已有數(shù)據(jù)類型,new_type_name代表新的別名。existing_type可以是任意合法的數(shù)據(jù)類型,包括基本數(shù)據(jù)類型、指針、結(jié)構(gòu)體、聯(lián)合體、枚舉等。
typedef可以將一個(gè)復(fù)雜的數(shù)據(jù)類型(例如struct或者union)簡化為一個(gè)易于使用和理解的名稱,也可以定義新的類型名稱以使得多個(gè)數(shù)據(jù)類型具有相同的類型名稱,從而增加代碼的清晰度。
下面是一些typedef的例子:
typedef int myint; // 將 int 類型起個(gè)新的別名 myint
typedef float* pfloat; // 將 float* 類型起個(gè)新的別名為 pfloat
// 用 typedef 定義結(jié)構(gòu)體別名
typedef struct {
char name[20];
int age;
} Person;
// 用 typedef 定義枚舉類型別名
typedef enum {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
} Weekday;
在上面的例子中,myint是int類型的別名,pfloat是float*類型的別名。Person是一個(gè)結(jié)構(gòu)體別名,可以通過Person代替struct { char name[20]; int age; }來定義結(jié)構(gòu)體。Weekday是一個(gè)枚舉類型的別名,可以通過Weekday代替enum { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }來定義枚舉類型。
需要注意的是,typedef只是給一個(gè)已有的數(shù)據(jù)類型起一個(gè)新的別名,它并不會(huì)創(chuàng)建新的數(shù)據(jù)類型。因此,typedef語句不能用于定義新的變量,而只能用于定義新的類型名稱。
枚舉類型
枚舉類型是C和C++中的一種數(shù)據(jù)類型,用于定義一個(gè)有限的、命名的整數(shù)值集合。枚舉類型可以簡化代碼的可讀性和維護(hù)性,同時(shí)提供了一種方式來表示一組相關(guān)的常量。
在C/C++中,定義一個(gè)枚舉類型使用enum關(guān)鍵字,其語法如下:
enum enum_name {
value1,
value2,
value3,
// ...
};
其中,enum_name是枚舉類型的名稱,value1、value2、value3等是枚舉常量,表示枚舉類型的取值。每個(gè)枚舉常量都會(huì)被編譯器分配一個(gè)整數(shù)值,默認(rèn)情況下從0開始遞增。
以下是一個(gè)示例:
enum Color {
RED, // 0
GREEN, // 1
BLUE // 2
};
enum Weekday {
Monday, // 0
Tuesday, // 1
Wednesday, // 2
Thursday, // 3
Friday, // 4
Saturday, // 5
Sunday // 6
};
在上面的示例中,Color是一個(gè)枚舉類型,它包含了三個(gè)枚舉常量RED、GREEN和BLUE。默認(rèn)情況下,RED的值是0,GREEN的值是1,BLUE的值是2。
同樣地,Weekday是另一個(gè)枚舉類型,它包含了七個(gè)枚舉常量,分別代表星期一到星期日,它們的值從0到6遞增。
在使用枚舉類型時(shí),可以通過枚舉常量來表示具體的值。例如:
Color myColor = RED;
Weekday today = Wednesday;
上述代碼中,myColor被賦值為RED,today被賦值為Wednesday。
需要注意的是,枚舉常量的作用域是在所屬的枚舉類型中,并且枚舉常量之間是唯一的。也可以通過顯式地指定枚舉常量的值來自定義枚舉常量的整數(shù)值。例如:
enum Status {
OK = 0,
ERROR = -1,
WARNING = 1
};
在這個(gè)示例中,Status是一個(gè)枚舉類型,它包含了三個(gè)枚舉常量OK、ERROR和WARNING,并且分別被賦予了整數(shù)值0、-1和1。
枚舉類型在編程中經(jīng)常用于表示一組相關(guān)的常量,增加代碼的可讀性和可維護(hù)性。它在switch語句中也常用于改善代碼的可讀性,使得程序更加清晰易懂。
類型轉(zhuǎn)換
類型轉(zhuǎn)換是將一個(gè)數(shù)據(jù)類型的值轉(zhuǎn)換為另一種數(shù)據(jù)類型的值。
C++ 中有四種類型轉(zhuǎn)換:靜態(tài)轉(zhuǎn)換、動(dòng)態(tài)轉(zhuǎn)換、常量轉(zhuǎn)換和重新解釋轉(zhuǎn)換。
1、靜態(tài)轉(zhuǎn)換(Static Cast):
靜態(tài)轉(zhuǎn)換是一種編譯時(shí)類型轉(zhuǎn)換,在代碼中使用 static_cast<type>(value) 的形式進(jìn)行。它可以將基本數(shù)據(jù)類型或者用戶定義的類型進(jìn)行轉(zhuǎn)換。靜態(tài)轉(zhuǎn)換通常用于比較寬松的類型轉(zhuǎn)換,例如將一個(gè)指針轉(zhuǎn)換為整數(shù)類型,或者將一個(gè)整數(shù)類型轉(zhuǎn)換為枚舉類型等。但需要注意的是,靜態(tài)轉(zhuǎn)換可能會(huì)導(dǎo)致數(shù)據(jù)精度損失或無效的轉(zhuǎn)換,因此在進(jìn)行類型轉(zhuǎn)換時(shí)要謹(jǐn)慎使用,并確保轉(zhuǎn)換操作是安全和合理的。
2、動(dòng)態(tài)轉(zhuǎn)換(Dynamic Cast):
動(dòng)態(tài)轉(zhuǎn)換是一種運(yùn)行時(shí)類型轉(zhuǎn)換,在代碼中使用 dynamic_cast<type>(pointer) 的形式進(jìn)行。它通常用于將一個(gè)基類指針或引用轉(zhuǎn)換為派生類指針或引用。在進(jìn)行動(dòng)態(tài)轉(zhuǎn)換時(shí),需要注意轉(zhuǎn)換操作的安全性,如果指針或引用不是指向?qū)嶋H對(duì)象,則轉(zhuǎn)換操作會(huì)失敗,返回空指針或引用。
3、常量轉(zhuǎn)換(Const Cast):
常量轉(zhuǎn)換是一種用于移除變量的常量屬性或加上變量的常量屬性的類型轉(zhuǎn)換,使用 const_cast<type>(variable) 的形式進(jìn)行。它通常用于解決一些編譯器警告或者將 const 類型轉(zhuǎn)換為非 const 類型的情況。但是需要注意,常量轉(zhuǎn)換只能用于非常量變量上,否則會(huì)導(dǎo)致未定義的行為。
4、重新解釋轉(zhuǎn)換(Reinterpret Cast):
重新解釋轉(zhuǎn)換是一種類型轉(zhuǎn)換,它可以將一個(gè)指針轉(zhuǎn)換為另一個(gè)無關(guān)類型的指針,或者將一個(gè)整數(shù)類型轉(zhuǎn)換為一個(gè)指針類型,使用 reinterpret_cast 進(jìn)行。它通常用于將不同類型之間的二進(jìn)制數(shù)據(jù)進(jìn)行轉(zhuǎn)換,但需要注意的是,這種轉(zhuǎn)換可能會(huì)產(chǎn)生危險(xiǎn)和未定義的行為,因此在使用時(shí)要格外小心。
下面是一個(gè)簡單的代碼示例,演示了在 C++ 中如何使用不同類型轉(zhuǎn)換方式:
#include <iostream>
using namespace std;
int main() {
// 靜態(tài)轉(zhuǎn)換
int a = 10;
double b = static_cast<double>(a);
cout << "Static Cast: " << b << endl;
// 動(dòng)態(tài)轉(zhuǎn)換
class Base {
public:
virtual void print() {
cout << "This is a Base class." << endl;
}
};
class Derived : public Base {
public:
void print() {
cout << "This is a Derived class." << endl;
}
};
Base* base_ptr = new Derived;
Derived* derived_ptr = dynamic_cast<Derived*>(base_ptr);
if (derived_ptr != NULL) {
derived_ptr->print();
} else {
cout << "Dynamic Cast Failed." << endl;
}
// 常量轉(zhuǎn)換
const int x = 5;
int y = const_cast<int&>(x);
y++;
cout << "Const Cast: " << y << endl;
// 重新解釋轉(zhuǎn)換
int c = 100;
void* ptr = reinterpret_cast<void*>(&c);
int* d = reinterpret_cast<int*>(ptr);
cout << "Reinterpret Cast: " << *d << endl;
return 0;
}
輸出結(jié)果如下:
Static Cast: 10
This is a Derived class.
Const Cast: 6
Reinterpret Cast: 100
該示例中分別使用了四種不同的類型轉(zhuǎn)換方式,包括靜態(tài)轉(zhuǎn)換、動(dòng)態(tài)轉(zhuǎn)換、常量轉(zhuǎn)換和重新解釋轉(zhuǎn)換。靜態(tài)轉(zhuǎn)換將整數(shù)類型轉(zhuǎn)換為浮點(diǎn)數(shù)類型,動(dòng)態(tài)轉(zhuǎn)換將基類指針轉(zhuǎn)換為派生類指針并調(diào)用其成員函數(shù),常量轉(zhuǎn)換將 const 類型的變量轉(zhuǎn)換為非 const 類型的變量并修改其值,重新解釋轉(zhuǎn)換將整數(shù)類型的變量地址轉(zhuǎn)換為 void 類型的指針并再次轉(zhuǎn)換回整數(shù)類型的指針。通過該示例,可以更加深入地理解不同類型轉(zhuǎn)換方式的使用方法和注意事項(xiàng)。
變量類型
1、整數(shù)類型(Integer Types):
- int:用于表示整數(shù),通常占用4個(gè)字節(jié)。
- short:用于表示短整數(shù),通常占用2個(gè)字節(jié)。
- long:用于表示長整數(shù),通常占用4個(gè)字節(jié)。
- long long:用于表示更長的整數(shù),通常占用8個(gè)字節(jié)。
2、浮點(diǎn)類型(Floating-Point Types):
- float:用于表示單精度浮點(diǎn)數(shù),通常占用4個(gè)字節(jié)。
- double:用于表示雙精度浮點(diǎn)數(shù),通常占用8個(gè)字節(jié)。
- long double:用于表示更高精度的浮點(diǎn)數(shù),占用字節(jié)數(shù)可以根據(jù)實(shí)現(xiàn)而變化。
3、字符類型(Character Types):
- char:用于表示字符,通常占用1個(gè)字節(jié)。
- wchar_t:用于表示寬字符,通常占用2或4個(gè)字節(jié)。
- char16_t:用于表示16位Unicode字符,占用2個(gè)字節(jié)。
- char32_t:用于表示32位Unicode字符,占用4個(gè)字節(jié)。
4、布爾類型(Boolean Type):
- bool:用于表示布爾值,只能取true或false。
5、枚舉類型(Enumeration Types):
- enum:用于定義一組命名的整數(shù)常量。
6、指針類型(Pointer Types):
- type*:用于表示指向類型為type的對(duì)象的指針。
7、數(shù)組類型(Array Types):
- type[]或type[size]:用于表示具有相同類型的元素組成的數(shù)組。
8、結(jié)構(gòu)體類型(Structure Types):
- struct:用于定義包含多個(gè)不同類型成員的結(jié)構(gòu)。
9、類類型(Class Types):
- class:用于定義具有屬性和方法的自定義類型。
10、共用體類型(Union Types):
- union:用于定義一種特殊的數(shù)據(jù)類型,它可以在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類型。
11、其他類型:
- 空類型(void):空類型表示無類型。
- nullptr類型(nullptr):nullptr類型表示空指針。
12、引用類型:
- 引用類型(int&,float&等)
注意:這些變量類型具有不同的特性和用途。基本數(shù)據(jù)類型用于存儲(chǔ)單個(gè)數(shù)據(jù)值,復(fù)合數(shù)據(jù)類型可以存儲(chǔ)多個(gè)相關(guān)數(shù)據(jù)值,指針類型和引用類型用于間接訪問變量和內(nèi)存地址,類類型用于創(chuàng)建自定義的對(duì)象類型,空類型表示無類型,nullptr類型表示空指針。
例如,以下是使用不同變量類型的示例:
#include <iostream>
using namespace std;
int main() {
int age = 25; // 整數(shù)類型
double salary = 5000.75; // 浮點(diǎn)數(shù)類型
char grade = 'A'; // 字符類型
bool isPassed = true; // 布爾類型
int numbers[] = {1, 2, 3, 4, 5}; // 數(shù)組類型
struct Person {
string name;
int age;
};
Person person1 = {"John", 30}; // 結(jié)構(gòu)體類型
enum Color { RED, GREEN, BLUE }; // 枚舉類型
Color color = GREEN;
int* ptr = nullptr; // 指針類型
int& ref = age; // 引用類型
class Circle {
double radius;
};
Circle c; // 類類型
void* p = nullptr; // 空類型
return 0;
}
在這個(gè)示例中,我們用不同的變量類型聲明和初始化了變量。請(qǐng)注意,C++是一種靜態(tài)類型語言,變量必須在使用之前顯式聲明其類型,并且不能在運(yùn)行時(shí)更改其類型。
變量定義
在C++中,可以使用以下語法來定義變量:
type variable_name; // 變量定義,不初始化
type variable_name = value; // 變量定義,并初始化為特定的值
其中,type表示變量的數(shù)據(jù)類型(type?必須是一個(gè)有效的 C++ 數(shù)據(jù)類型,可以是 char、wchar_t、int、float、double、bool 或任何用戶自定義的對(duì)象),variable_name表示變量的名稱(variable_list?可以由一個(gè)或多個(gè)標(biāo)識(shí)符名稱組成,多個(gè)標(biāo)識(shí)符之間用逗號(hào)分隔。),value表示變量的初始值。
以下是一些示例:
int age; // 定義一個(gè)整數(shù)變量age
double salary = 5000.75; // 定義一個(gè)雙精度浮點(diǎn)數(shù)變量salary并初始化為5000.75
char grade = 'A'; // 定義一個(gè)字符變量grade并初始化為'A'
bool isPassed = true; // 定義一個(gè)布爾變量isPassed并初始化為true
int x, y, z; // 同時(shí)定義多個(gè)整數(shù)變量x, y, z
double pi = 3.14159, radius = 5; // 同時(shí)定義多個(gè)雙精度浮點(diǎn)數(shù)變量pi, radius并初始化
注意事項(xiàng):
- 變量名必須遵循標(biāo)識(shí)符的命名規(guī)則,且不能與C++的關(guān)鍵字重復(fù)。
- 在定義變量時(shí),可以選擇是否對(duì)其進(jìn)行初始化。未初始化的變量將具有不確定的值。
- 可以在定義變量時(shí)使用賦值運(yùn)算符 = 進(jìn)行初始化,將特定的值賦給變量。
- 在同一行上可以定義多個(gè)相同類型的變量,并用逗號(hào) , 分隔它們。
值得一提的是,C++還支持在函數(shù)內(nèi)部定義局部變量、在類中定義成員變量以及在命名空間中定義全局變量。這些變量定義的語法稍有不同,但基本原則和概念相同。
變量聲明
在C++中,變量的聲明是指在使用變量之前提前聲明其存在,告訴編譯器變量的類型和名稱。變量聲明只會(huì)創(chuàng)建變量的標(biāo)識(shí)符,而不會(huì)分配內(nèi)存空間或初始化變量。
以下是一些變量聲明的例子:
1、聲明整數(shù)變量:
extern int age; // 聲明一個(gè)整數(shù)變量age
2、聲明浮點(diǎn)數(shù)變量:
extern double pi; // 聲明一個(gè)雙精度浮點(diǎn)數(shù)變量pi
3、聲明字符變量:
extern char grade; // 聲明一個(gè)字符變量grade
4、聲明布爾變量:
extern bool isPassed; // 聲明一個(gè)布爾變量isPassed
5、聲明字符串變量:
#include <string> // 引入<string>頭文件
using namespace std;
extern string name; // 聲明一個(gè)字符串變量name
需要注意的是,變量的聲明通常與變量的定義分開。變量的定義是在聲明的基礎(chǔ)上為變量分配內(nèi)存空間并可能進(jìn)行初始化。變量的聲明一般放在頭文件中,以便在多個(gè)源文件中共享同一個(gè)變量。
例如,在一個(gè)名為 variables.h 的頭文件中聲明變量:
extern int age; // 聲明整數(shù)變量age
extern double pi; // 聲明雙精度浮點(diǎn)數(shù)變量pi
extern char grade; // 聲明字符變量grade
然后,在源文件中進(jìn)行變量的定義和初始化:
#include "variables.h"
int age = 25; // 定義并初始化整數(shù)變量age
double pi = 3.14159; // 定義并初始化雙精度浮點(diǎn)數(shù)變量pi
char grade = 'A'; // 定義并初始化字符變量grade
這樣,通過在源文件中包含聲明的頭文件,可以在不同的源文件中訪問和使用這些變量。
左值(Lvalues)和右值(Rvalues)
在C++中,表達(dá)式可以分為左值(lvalues)和右值(rvalues)。左值和右值的主要區(qū)別在于它們?cè)谫x值操作符的左邊或右邊出現(xiàn)的位置。
左值(lvalue)是一個(gè)具有內(nèi)存地址并且可以被引用的表達(dá)式。它可以出現(xiàn)在賦值操作符的左邊或右邊。換句話說,左值是一個(gè)可以被取址的表達(dá)式。典型的左值包括變量、對(duì)象成員以及通過解引用指針獲得的值。
右值(rvalue)是一個(gè)臨時(shí)的、不具有內(nèi)存地址的表達(dá)式。它只能出現(xiàn)在賦值操作符的右邊。右值通常是臨時(shí)生成的值、字面量或表達(dá)式的結(jié)果。右值不能直接被引用,但可以通過將其綁定到右值引用(rvalue reference)來延長其生命周期。
C++11引入了右值引用(rvalue references),它們是一種新的引用類型,用于延長右值的生命周期并支持移動(dòng)語義。通過將右值綁定到右值引用上,可以對(duì)其進(jìn)行修改或移動(dòng)。
下面是一些示例:
int x = 5; // x是一個(gè)左值
int& lvalueRef = x; // 左值引用可以引用左值
int y = x + 3; // x+3是一個(gè)右值
int&& rvalueRef = x + 3; // 右值引用可以引用右值
int z = std::move(x); // std::move()將左值轉(zhuǎn)換為右值引用
需要注意的是,C++中的一些情況下,左值可以被隱式地轉(zhuǎn)換為右值,例如在函數(shù)返回語句中,即使左值也可以用作右值。
總結(jié)來說,左值是具有內(nèi)存地址的表達(dá)式,可以出現(xiàn)在賦值操作符的左邊或右邊。右值是臨時(shí)生成的、不具有內(nèi)存地址的表達(dá)式,只能出現(xiàn)在賦值操作符的右邊。右值引用類型可以綁定到右值,并支持對(duì)其進(jìn)行修改或移動(dòng)。
變量作用域
一般來說有三個(gè)地方可以定義變量:
-
在函數(shù)或一個(gè)代碼塊內(nèi)部聲明的變量,稱為局部變量。
-
在函數(shù)參數(shù)的定義中聲明的變量,稱為形式參數(shù)。
-
在所有函數(shù)外部聲明的變量,稱為全局變量。
1、全局作用域(Global Scope):在任何函數(shù)、代碼塊之外定義的變量具有全局作用域。這意味著它們?cè)谡麄€(gè)程序中都是可見和可訪問的。全局變量在程序啟動(dòng)時(shí)被創(chuàng)建,在程序結(jié)束時(shí)銷毀。
#include <iostream>
int globalVariable = 10; // 全局變量
int main() {
std::cout << globalVariable << std::endl; // 可以在任何位置訪問全局變量
return 0;
}
2、塊作用域(Block Scope):在函數(shù)或代碼塊內(nèi)部定義的變量具有塊作用域。這意味著它們只在定義它們的代碼塊內(nèi)部是可見和可訪問的。當(dāng)代碼塊執(zhí)行完畢后,變量將被銷毀。
#include <iostream>
int main() {
int x = 5; // 塊作用域的變量
{
int y = 10; // 嵌套的塊作用域的變量
std::cout << x << " " << y << std::endl; // 可以在代碼塊內(nèi)部訪問x和y
}
std::cout << x << std::endl; // 只能在外層代碼塊內(nèi)部訪問x
// std::cout << y << std::endl; // 錯(cuò)誤:y超出了作用域,無法訪問
return 0;
}
3、函數(shù)參數(shù)作用域(Function Parameter Scope):函數(shù)參數(shù)的作用域僅限于函數(shù)內(nèi)部。它們?cè)诤瘮?shù)被調(diào)用時(shí)創(chuàng)建,并在函數(shù)執(zhí)行完畢后銷毀。
#include <iostream>
void myFunction(int param) { // 參數(shù)param的作用域僅限于函數(shù)內(nèi)部
std::cout << param << std::endl; // 可以在函數(shù)內(nèi)部訪問參數(shù)param
}
int main() {
myFunction(5);
// std::cout << param << std::endl; // 錯(cuò)誤:參數(shù)param的作用域僅限于函數(shù)內(nèi)部,無法在main函數(shù)中訪問
return 0;
}
4、類作用域(Class Scope):在類定義內(nèi)部聲明的變量具有類作用域。它們可以被類中的任何成員函數(shù)訪問。
#include <iostream>
class MyClass {
public:
int classVariable; // 類作用域的變量
void myMethod() {
std::cout << classVariable << std::endl; // 可以在成員函數(shù)中訪問類作用域的變量
}
};
int main() {
MyClass obj;
obj.classVariable = 10;
obj.myMethod();
return 0;
}
需要注意的是,當(dāng)在內(nèi)部作用域中聲明的變量與外部作用域中的變量同名,內(nèi)部作用域的變量會(huì)隱藏外部作用域的同名變量。文章來源:http://www.zghlxwxcb.cn/news/detail-740487.html
變量的作用域是C++中管理變量可見性和訪問性的重要概念。了解變量作用域?qū)τ诰帉懻_和清晰的代碼非常重要。文章來源地址http://www.zghlxwxcb.cn/news/detail-740487.html
到了這里,關(guān)于學(xué)習(xí)c++的第二天的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!