C語言學習的一些細節

2021-10-04 14:16:19 字數 2085 閱讀 6948

一.變數的生命週期和作用域

生命週期:變數的存在時間

作用域:變數的作用範圍

變數的這兩個屬性決定了什麼時候以及在什麼地方可以使用此變數。

需要注意的是

1.迴圈內部定義的變數,生命週期為迴圈開始到結束

int main

printf

("%d"

,i);

//這條語句會報錯,使用了沒有定義的變數。

return0;

}

2.static的用法

static 飾區域性變數

static修飾區域性變數只改變變數的生命週期,而不改

變變數的作用域,它的作用是讓區域性變數出了作用域依然存在。

static 修飾全域性變數

該變數可以在本檔案中使用。

static 修飾函式

該函式可以在本檔案中使用

3.變數只能被初始化一次,但是可以被多次賦值。

include

include

void

show()

intmain()

}

因為上述第三條

程式執行結果為 順序列印1-10;

而不是 列印 十個1;

二.初始化和賦值的區別

初始化是系統在編譯時進行的,而賦值是在程式執行時執行。

建議定義變數時要進行初始化。

三.逗號表示式

逗號表示式就是在圓括號中用逗號隔開的表示式。

例如(1,2,3,4,54)

而逗號表示式的值為括號內最右側的值。

int a=(1

,2,3

,4,5

,6);

//結果a的值為6

四.c語言字串

1.c語言是沒有字串型別的,要使用字串,可以通過字元陣列或者字元指標。

例如

char c=

"abc"

;char

*b;b=c;

2.字串結束標誌』/0』

char a=

;char b=

"abc"

;printf

("%d\n"

,strlen

(a))

;//沒有字串結束標誌'\0',輸出值不確定

printf

("%d\n"

,strlen

(b))

;//求字串長度為3

3.sizeof和strlen的區別

.sizeof是運算子,其引數可以是陣列、指標、型別、物件、函式等。具體型別sizeof返回值unsigned int如下:

陣列——編譯時分配的陣列空間大小;

指標——儲存該指標所用的空間大小(儲存該指標的位址的長度,是長整型,應該為4);

型別——該型別所佔的空間大小;

物件——物件的實際占用空間大小;

函式——函式的返回型別所佔的空間大小。函式的返回型別不能是void。

strlen是函式,其庫函式為

引數必須是字元型指標, 它的功能是:返回字串的長度。該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第乙個位址開始遍歷,直到遇到結束符null。返回的長度大小不包括null。

五.typedef和#define

#define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。

例如:#define

#define lom 500//注意, 最後沒有分號

typedef是定義了一種型別的新別名,不是簡單的字串替換,所以它比巨集(#define)來得穩健。

例如:typedef int in;

將整形變數int 定義新的名字in。

關於c語言學習的一些建議

一.關於學習的平台 先思考一下你是屬於哪一類的 如果你是大一剛剛開始學習的小白 1.首推的當然是b站,在首頁搜尋c語言會有一大批優秀的教學資源,可以新增到個人的收藏夾,方便後期學習 嗶哩嗶哩 乾杯 bilibili www.bilibili.com 如下 2.中國大學慕課 好的不要再好了。以上是初學...

C 一些細節

include include pthread.h using namespace std static pthread mutex t mutex class single class single public static single instance static single getin...

C 的一些細節

1.c 中,將負數賦值給unsigned是完全合法的。例如,將 1賦值給unsigned char,那麼結果是255.2.c 中,double的精度和計算速度都要超過float,long double則需要承擔額外的執行代價。3.std ou t hi d endl 等價於std out hi 4....