簡約創(chuàng)意情人節(jié)海報設計seo關鍵詞優(yōu)化公司哪家好
文章目錄
- 【 1. 變量的定義 】
- 【 2. 變量的聲明 】
- 示例
- 【 3. 左值和右值 】
- 變量:相當于是程序可操作的數(shù)據(jù)存儲區(qū)的名稱。在 C++ 中,有多種變量類型可用于存儲不同種類的數(shù)據(jù)。C++ 中每個變量都有指定的類型,類型決定了變量存儲的大小和布局,該范圍內(nèi)的值都可以存儲在內(nèi)存中,運算符可應用于變量上。
- 變量的名稱可以由字母、數(shù)字和下劃線 字符組成。它 必須以字母或下劃線開頭 。大寫字母和小寫字母是不同的,因為 C++ 是 大小寫敏感 的。
- 變量的分類:整形、浮點型、字符型、布爾型、指針、數(shù)組、枚舉型、共用體、結構體、類、引用、數(shù)據(jù)結構 等。
- 變量類型和數(shù)據(jù)類型的區(qū)別:變量類型包含了數(shù)據(jù)類型,比如說數(shù)據(jù)類型是 int,那么變量類型也可能是 int,而變量類型是結構體,而數(shù)據(jù)類型中就沒有包括枚舉;可以說,數(shù)據(jù)類型是底層建筑,而變量類型是上層建筑;而且變量可以被操作。
【 1. 變量的定義 】
- 變量定義就是告訴編譯器在何處創(chuàng)建變量的存儲,以及如何創(chuàng)建變量的存儲。
- 變量定義指定一個數(shù)據(jù)類型,并包含了該類型的一個或多個變量的列表,如下所示:
在這里,type 必須是一個有效的 C++ 數(shù)據(jù)類型,可以是 char、wchar_t、int、float、double、bool 或任何用戶自定義的對象,variable_list 可以由一個或多個標識符名稱組成,多個標識符之間用逗號分隔。
type variable_list;
// 下面列出幾個有效的聲明:
int i, j, k; //聲明并定義了變量 i、j 和 k,這指示編譯器創(chuàng)建類型為 int 的名為 i、j、k 的變量。
char c, ch;
float f, salary;
double d;
- 變量可以在聲明的時候被初始化(指定一個初始值)。初始化器由一個等號,后跟一個常量表達式組成,如下所示:
type variable_name = value;
下面列舉幾個實例:
extern int d = 3, f = 5; // d 和 f 的聲明
int d = 3, f = 5; // 定義并初始化 d 和 f
byte z = 22; // 定義并初始化 z
char x = 'x'; // 變量 x 的值為 'x'
- 不帶初始化的定義:帶有靜態(tài)存儲持續(xù)時間的變量會被隱式初始化為 NULL(所有字節(jié)的值都是 0),其他所有變量的初始值是未定義的。
【 2. 變量的聲明 】
- 變量聲明 向編譯器保證變量以給定的類型和名稱存在,這樣編譯器在不需要知道變量完整細節(jié)的情況下也能繼續(xù)進一步的編譯。變量聲明只在編譯時有它的意義,在程序連接時編譯器需要實際的變量聲明。
- 當使用多個文件且只在其中一個文件中定義變量時(定義變量的文件在程序連接時是可用的),變量聲明就顯得非常有用。您可以使用 extern 關鍵字在任何地方聲明一個變量。雖然您可以在 C++ 程序中多次聲明一個變量,但變量只能在某個文件、函數(shù)或代碼塊中被定義一次。
extern int a; //聲明一個全局變量a。
int a; //定義一個全局變量a。extern int a =0 ; //定義一個全局變量a,并給初值。
int a =0; //定義一個全局變量a,并給初值。
- 第3個 等于 第 4個,都是定義一個可以被外部使用的全局變量,并給初值,即 有賦值的就是定義。
- 定義只能出現(xiàn)1次,聲明可以出現(xiàn)多次!:不管是 int a; 還是 extern int a=0; 還是 int a=0; 都只能出現(xiàn)一次,而 extern int a;可以出現(xiàn)很多次。
- 當使用一個全局變量的時候,就要用到 聲明的唯一代碼:extern int a; 這時候extern不能省略,因為省略了,就變成 int a; 就變成了一個定義,而不是聲明;另外賦值的話如 extern int a=5; 也就變成了定義。
- 另一種方式:
在頭文件中包含下列代碼:
extern int temp=5;
而在對應包含該頭文件的源文件中則不需聲明該變量。
示例
- 普通變量
//.cpp文件
int Distance;
//.h文件
extern int Distance;
- 結構體變量
//.cpp文件
lidar BenewakeLidar;
//.h文件
typedef struct
{uint16_t Dist;uint16_t AMP;uint16_t tem;uint8_t RecieveFlag;
}lidar;extern lidar BenewakeLidar;
- 變量在頭部就已經(jīng)被聲明,但是在主函數(shù)內(nèi)被定義和初始化。
#include <iostream>
using namespace std;// 變量聲明
extern int a, b;
extern int c;
extern float f;int main ()
{// 變量定義int a, b;int c;float f;// 實際初始化a = 10;b = 20;c = a + b;cout << c << endl ;f = 70.0/3.0;cout << f << endl ;return 0;
}
- 函數(shù)的聲明
// 函數(shù)聲明
int func();int main()
{// 函數(shù)調(diào)用int i = func();
}// 函數(shù)定義
int func()
{return 0;
}
【 3. 左值和右值 】
C++ 中有兩種類型的表達式:
- 左值(lvalue):指向內(nèi)存位置的表達式被稱為左值(lvalue)表達式。左值可以出現(xiàn)在賦值號的左邊或右邊。
- 右值(rvalue):指的是存儲在內(nèi)存中某些地址的數(shù)值。右值是不能對其進行賦值的表達式,也就是說,右值可以出現(xiàn)在賦值號的右邊,但不能出現(xiàn)在賦值號的左邊。
- 變量是左值,因此可以出現(xiàn)在賦值號的左邊。數(shù)值型的字面值是右值,因此不能被賦值,不能出現(xiàn)在賦值號的左邊。
// 下面是一個有效的語句:
int g = 20;
// 但是下面這個就不是一個有效的語句,會生成編譯時錯誤:
10 = 20;