C 變數和基本型別(一)

2021-07-22 02:43:04 字數 2063 閱讀 2173

1基本內建型別:

c++ 定義了一套包括算術型別和空型別在內的基本資料型別。算術型別包括字元,整型數,布林值和浮點數。空型別不對應任何具體地值,僅用於特殊的場合,例如函式不返回任何值時使用空型別作為返回型別。

算術型別分為兩大類:整型(包括字元和布林型別在內)和浮點型。

帶符號型別和無符號型別:除去布林型別和擴充套件的字元型別外,其他整型可以劃分為帶符號的(signed)和無符號的(unsigned)兩種。型別 int, short, long 和 long long 都是帶符號的。與其他整型不同,字元型被分為三種:char, signed char 和 unsigned char。型別 char 和型別 signed char 並不一樣。儘管字元型有三種,但是字元的表現形式卻只有兩種:帶符號的和無符號的。型別char 實際上會表現為上述兩種形式中的一種,具體是哪種由編譯器決定。

型別轉換:

bool b = 42; // b為真

int i = b; // i 的值為1

i = 3.14; // i 的值為3

double pi = i; // pi的值為3.0

unsigned char c = -1; // 假設 char 佔8位元,c的值為255

signed char c2 = 256; // 假設 char 佔8位元,c2 的值是未定義的

note: 當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總和取模後的餘數。當我們賦給帶符號型別乙個超出它表示範圍的值時,結果是未定義的。

當從無符號數中減去乙個值時,不管這個值是不是無符號數,我們都必須確保結果不能是乙個負值。

預設初始化:

如果是內建型別的變數未被顯式初始化,它的值由定義的位置決定。定義於任何函式體之外的變數初始化為 0 。定義在函式體內部的內建型別變數將不被初始化。

2 變數:

變數宣告和定義:

宣告使得名字為程式所知,乙個檔案如果想使用別處定義的名字則必須包含對那個名字的宣告。而定義負責建立與名字關聯的實體。

extern int i; // 宣告 i 而非定義 i

int j; // 宣告並定義j

3 復合型別:

復合型別是指基於其他型別定義的型別。c++ 語言有幾種符合型別,例如引用和指標。

引用:引用是為乙個已經存在的物件所起的另外乙個名字。引用必須被初始化。

int ival = 1024;

int &refval = ival;

指標:指標指向物件,允許使用操作符*訪問物件

int ival = 42;

int *p = &ival;

cout << *p; // 輸出42

空指標不指向任何物件

int *p1 = nullptr; // 等價於 * p1 = 0

int *p2 = 0;

int *p3 = null; // 等價於 * p3 = 0

int 變數直接賦給指標是錯誤的,例如

int zero = 0;

p1 = zero;

應用和指標都能提供對其他物件的間接訪問,然而在具體實現細節上二者有很大的不同,其中重要的一點就是引用本身並非乙個物件。一旦定義了引用,就無法令其再繫結到另外的物件,之後每次使用這個引用都是訪問它最初繫結的那個物件。指標和它存放的位址之間就沒有這種限制了。

void* 指標

void* 是一種特殊的指標型別,可以存放任意物件的位址。

double obj = 3.14, *pd = &obj;

void *pv = &obj;

pv = pd;

利用void * 指標能做的事兒比較有限:拿它和別的指標比較、作為函式的輸入或輸出,或者賦給另外乙個void*指標。不能直接操作void*指標所指向的物件,因為並不知道這個物件到底是什麼型別。

復合型別的宣告

定義多個變數

int* p1, p2; // p1 是指向int 的指標, p2 是int

指向指標的指標

int ival = 1024;

int *pi = &ival; // pi指向乙個int型的數

int **ppi = π // ppi指向乙個int 型的指標

C 基本型別和變數

算術型別包含整型 包括字元和布林型別 和浮點型。主要型別 bool char wchar t char16 t char32 t short intlong long long float double long double 在程式中,帶符號型別和不帶符號型別最好不要混用,容易出現錯誤。如下圖 2...

C 變數和基本型別

變數的宣告與定義 聲加粗樣式明用於向程式表明變數的型別和名字,用extern表示,它不分配記憶體,定義則用於分配儲存空間,當然,定義也是宣告。const const修飾變數後,其值不可被修改,任何修改的嘗試都會導致編譯錯誤。引用 即物件的另乙個名字,在實際程式中主要用作函式的形參。1 引用是它繫結的...

c 基本型別和變數

基本型別,c 內建型別 setlocale lc all,chs bool bo true char ch a wchar t wch l 中國 short sh 32767 32768 32767 int i 10 32768 32767 long l 123456 2147483648 2147...