一.變數的生命週期和作用域
生命週期:變數的存在時間
作用域:變數的作用範圍
變數的這兩個屬性決定了什麼時候以及在什麼地方可以使用此變數。
需要注意的是
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....