C 語言基礎

2022-07-14 23:03:23 字數 3133 閱讀 4395

一、變數的儲存型別:

1.auto:auto稱為動態變數(區域性變數)。區域性變數是指在函式內部說明的變數(有時也稱為自動變數)。預設情況下的區域性變數均屬於auto變數。區域性變數在函式呼叫時自動產生,但不會自動初始化,隨函式呼叫的結束,這個變數也就自動消失了。下次呼叫此函式時再自動產生,還要再賦值,退出時又自動消失。

2.static:static稱為靜態變數。根據變數的型別可以分為靜態區域性變數和靜態全域性變數。

1. 靜態區域性變數:它與區域性變數的區別在於:在函式退出時,這個變數始終存在,但不能被其它函式使用;當再次進入該函式時,將儲存上次的結果。其它與區域性變數一樣。

2. 靜態全程變數:只在定義它的原始檔中可見而在其它原始檔中不可見的變數。它與全域性變數的區別是:全域性變數可以被其它原始檔使用,而靜態全域性變數只能被所在的原始檔使用。

3.extern:extern稱為外部變數。為了使變數除了在定義它的原始檔中可以使用外,還可以被其它檔案使用。因此通知每乙個程式模組檔案,此時可用extern來說明。

4.register:register稱為暫存器變數。它只能用於整型和字元型變數。定義符register說明的變數被儲存在cpu的暫存器中,定義乙個整型暫存器變數可寫成: register int a;

對於以上四種資料的儲存位置:register變數存在cpu的暫存器中;auto型別變數存在記憶體的棧;static型的區域性變數和全域性變數以及extern型變數(即全域性變數),存在於記憶體的靜態區。

二、資料型別

基本資料型別:

type

size

數值範圍

無值型void

0 byte

無值域布林型

bool 

1 byte

truefalse

有符號短整型

short [int] /signed short [int]

2 byte

-32768~32767

無符號短整型

unsigned short [int]

2 byte

0~65535

有符號整型

int /signed [int]

4 byte

-2147483648~2147483647

無符號整型

unsigned [int]

4 byte

0~4294967295

有符號長整型

long [int]/signed long [int]

4 byte

-2147483648~2147483647

無符號長整型

unsigned long [int]

4 byte

0~4294967295

long long

8 byte

0~18446744073709552000

有符號字元型

char/signed char

1 byte

-128~127

無符號字元型

unsigned char

1 byte

0~255

寬字元型

wchar_t (unsigned short.)

2 byte

0~65535

單精度浮點型

float

4 byte

-3.4e-38~3.4e+38

雙精度浮點型

double

8 byte

1.7e-308~1.7e+308

long double

8 byte

三、檔案型別

asc碼:  00110101 00110110 00110111 00111000

↓        ↓       ↓         ↓

十進位製碼:        5     6       7      8 

四、指標和引用

五、位運算

關於「異或」運算子(^)應用

(1)使特定位翻轉

設有數01111010(2),想使其低4位翻轉,即1變0,0變1.可以將其與00001111(2)進行「異或」運算,即:

01111010

^ 00001111

01110101

運算結果的低4位正好是原數低4位的翻轉。可見,要使哪幾位翻轉就將與其進行∧運算的該幾位置為1即可。

(2)與0相「異或」,保留原值

例如:012^00=012

00001010

^00000000

00001010

因為原數中的1與0進行異或運算得1,0^0得0,故保留原數。

(3) 交換兩個值,不用臨時變數

例如:a=3,即11(2);b=4,即100(2)。

想將a和b的值互換,可以用以下賦值語句實現:

a=a∧b;

b=b∧a;

a=a∧b;

a=011(2)

(∧)b=100(2)

a=111(2)(a∧b的結果,a已變成7)

(∧)b=100(2)

b=011(2)(b∧a的結果,b已變成3)

(∧)a=111(2)

a=100(2)(a∧b的結果,a已變成4)

等效於以下兩步:

① 執行前兩個賦值語句:「a=a∧b;」和「b=b∧a;」相當於b=b∧(a∧b)。

② 再執行第三個賦值語句: a=a∧b。由於a的值等於(a∧b),b的值等於(b∧a∧b),

因此,相當於a=a∧b∧b∧a∧b,即a的值等於a∧a∧b∧b∧b,等於b。

六、new 和 delete

p = new type;             //只分配堆記憶體

p = new type(x);       //分配記憶體並初始化為x

p = new type[n];      //分配具有n個元素的陣列

delete   p;             //釋放單個變數所占用的記憶體

delete   [ ]p;         //釋放陣列所占用的記憶體

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...

c語言基礎

1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...

C語言基礎

找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...