国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)c++的第二天

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)c++的第二天。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

數(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 相同):

學(xué)習(xí)c++的第二天,C++,學(xué)習(xí),c++,開發(fā)語言

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ì)隱藏外部作用域的同名變量。

變量的作用域是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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 預(yù)計(jì)練習(xí)兩年半的安全服務(wù)練習(xí)生的第二天

    預(yù)計(jì)練習(xí)兩年半的安全服務(wù)練習(xí)生的第二天

    ????????form表單是HTML語言中用于向服務(wù)器提交信息的標(biāo)簽 ????????常見屬性 action 指定將表單數(shù)據(jù)發(fā)送到哪個(gè)URL method 指定提交表單數(shù)據(jù)的方法,常用的有GET和POST,一般我們用POST,區(qū)別是:POST將數(shù)據(jù)作為HTTP發(fā)送,GET將數(shù)據(jù)作為URL查詢字符串發(fā)送 enctype encode type,當(dāng)

    2024年02月13日
    瀏覽(24)
  • 學(xué)習(xí)c++的第四天

    目錄 運(yùn)算符 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 位運(yùn)算符 賦值運(yùn)算符 雜項(xiàng)運(yùn)算符 運(yùn)算符優(yōu)先級(jí) 算術(shù)運(yùn)算符是 C++ 中用于執(zhí)行基本算術(shù)操作的運(yùn)算符。 加法運(yùn)算符 (+):將兩個(gè)操作數(shù)相加。例如,A + B 將得到 30,因?yàn)?10 + 20 等于 30。 減法運(yùn)算符 (-):從第一個(gè)操作數(shù)中減去第

    2024年02月06日
    瀏覽(16)
  • 學(xué)習(xí)c++的第九天

    目錄 結(jié)構(gòu)體 定義與訪問結(jié)構(gòu) 結(jié)構(gòu)作為函數(shù)參數(shù) 指向結(jié)構(gòu)的指針 typedef 示例 1:為結(jié)構(gòu)體創(chuàng)建類型別名 示例 2:為函數(shù)指針創(chuàng)建類型別名 在C++中,結(jié)構(gòu)體(structure)是一種用戶自定義的數(shù)據(jù)類型,用于組合不同類型的數(shù)據(jù)成員。結(jié)構(gòu)體可以包含變量、函數(shù)和其他數(shù)據(jù)

    2024年02月05日
    瀏覽(14)
  • 第一百二十二天學(xué)習(xí)記錄:C++提高:STL-vector容器(上)(黑馬教學(xué)視頻)

    第一百二十二天學(xué)習(xí)記錄:C++提高:STL-vector容器(上)(黑馬教學(xué)視頻)

    功能: vector數(shù)據(jù)結(jié)構(gòu)和數(shù)組非常相似,也稱為單端數(shù)組 vector與普通數(shù)組區(qū)別: 不同之處在于數(shù)組是靜態(tài)空間,而vector可以動(dòng)態(tài)擴(kuò)展 動(dòng)態(tài)擴(kuò)展: 并不是在原空間之后續(xù)接新的空間,而是找更大的內(nèi)存空間,然后將原數(shù)據(jù)拷貝新空間,釋放原空間 vector容器的迭代器是支持隨機(jī)

    2024年02月14日
    瀏覽(33)
  • 學(xué)習(xí)C語言的第一天

    學(xué)習(xí)C語言的第一天

    使用工具:visual studio 2010 搭建過程:新建項(xiàng)目、配置設(shè)置(主要是解決運(yùn)行后一閃而過的問題) ? 如何輸出各種數(shù)據(jù)類型? ?學(xué)習(xí)字節(jié)以及一些常用基本單位: ?搞懂十進(jìn)制和二進(jìn)制如何計(jì)算? ?從以上內(nèi)容,我們可以得出:如果我使用的是int類型,那么將有32個(gè)bit,也就是

    2023年04月18日
    瀏覽(32)
  • 小白學(xué)習(xí)c++的的第一節(jié)課

    小白學(xué)習(xí)c++的的第一節(jié)課

    經(jīng)過了很長時(shí)間對(duì)C語言和c的數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí),終于開始學(xué)C++了。前面基礎(chǔ)不牢,后面地動(dòng)山搖,給自己加油。 該如何去學(xué)習(xí)c++? 多寫博客。寫博客,主要是總結(jié)自己學(xué)習(xí)的知識(shí),更系統(tǒng)更全面對(duì)所學(xué)的知識(shí)進(jìn)行概況,也能起到復(fù)習(xí)的作用。 有時(shí)間的話多看看課外書 c++的學(xué)習(xí)不

    2024年02月08日
    瀏覽(29)
  • c++類開發(fā)的第三篇(講明白友元函數(shù)和this指針)

    c++類開發(fā)的第三篇(講明白友元函數(shù)和this指針)

    c++實(shí)現(xiàn)了 封裝 , 數(shù)據(jù) 和 處理數(shù)據(jù)的操作(函數(shù)) 是分開存儲(chǔ)的。 c++中的 非靜態(tài)數(shù)據(jù)成員 直接內(nèi)含在類對(duì)象中,就像c語言的struct一樣。 成員函數(shù)并不會(huì)出現(xiàn)在對(duì)象中,而是作為類的一部分存儲(chǔ)在代碼段中,需要通過對(duì)象或?qū)ο笾羔樳M(jìn)行調(diào)用。成員函數(shù)可以訪問類的所有成員

    2024年02月21日
    瀏覽(25)
  • NRCE 二級(jí)C語言開發(fā)環(huán)境:Microsoft Visual C++ 2010 學(xué)習(xí)版下載

    NRCE 二級(jí)C語言開發(fā)環(huán)境:Microsoft Visual C++ 2010 學(xué)習(xí)版下載

    Microsoft Visual C++ 2010 學(xué)習(xí)版 2022版考綱 網(wǎng)盤鏈接:點(diǎn)擊下載 提取碼:siyy 網(wǎng)盤地址下載太慢可以到:官網(wǎng)下載 下載完成后,是一個(gè)iso鏡像文件,點(diǎn)擊上方裝載。 裝載完成后,可以看到計(jì)算機(jī)處有個(gè)無窮圖標(biāo)的DVD驅(qū)動(dòng)器 現(xiàn)在就可以去到你安裝磁盤目錄下的IDE目錄(星號(hào)中間的

    2024年02月11日
    瀏覽(26)
  • SSM框架的學(xué)習(xí)與應(yīng)用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級(jí)應(yīng)用開發(fā)學(xué)習(xí)記錄(第二天)Mybatis的深入學(xué)習(xí)

    SSM框架的學(xué)習(xí)與應(yīng)用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級(jí)應(yīng)用開發(fā)學(xué)習(xí)記錄(第二天)Mybatis的深入學(xué)習(xí)

    上一篇我們的項(xiàng)目搭建好了,也寫了簡答的Junit測(cè)試類進(jìn)行測(cè)試,可以正確映射到數(shù)據(jù)庫中。 那么這篇文章來深入學(xué)習(xí)一下以下幾個(gè)點(diǎn): 了解 MyBatis的核心對(duì)象SqlSessionFactoryBuilder 以及它的作用 掌握MyBatis核心配置文件以及元素的使用 。 掌握MyBatis映射文件及其元素的使用 。

    2024年02月11日
    瀏覽(34)
  • C++類開發(fā)的第六篇(虛擬繼承實(shí)現(xiàn)原理和cl命令的使用的bug修復(fù))

    C++類開發(fā)的第六篇(虛擬繼承實(shí)現(xiàn)原理和cl命令的使用的bug修復(fù))

    接上一篇末尾虛擬繼承的簡單介紹之后,這篇來詳細(xì)講一下這個(gè)內(nèi)存大小是怎么分配的。 cl 是 Microsoft Visual Studio 中的 C/C++ 編譯器命令。通過在命令行中鍵入 cl 命令,可以調(diào)用 Visual Studio 的編譯器進(jìn)行編譯操作。 cl 命令提供了各種選項(xiàng)和參數(shù),用于指定源文件、編譯選項(xiàng)、

    2024年03月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包