C語言知識點複習 一

2021-07-05 07:45:21 字數 1330 閱讀 9719

break:跳出此迴圈 continue:跳出本次迴圈,繼續執行下一次迴圈操作

變數,記憶體,指標之間的關係

陣列,指標,函式

記憶體圖變數本質:儲存資料

陣列下標從0開始

陣列不初始化則陣列的每個元素為隨機數

取位址是用%p(可能是piont的意思) 輸出8位16進製制數(要看電腦的匯流排數)

陣列的本質:記憶體 申請記憶體:記憶體本來就是有的,只不過是得到記憶體讀寫許可權

申請記憶體是同時要進行初始化

陣列在定義是可以不宣告長度 但必須得賦初始值  int c =;則是錯誤的。

陣列只有在定義的時候才能用大括號的方法,其他情況必須乙個乙個來訪問。

當定義的陣列長度小於可賦值的長度時編譯可以通過,但是有潛在危險,這理論上是錯誤的,這就是陣列越界

char a; a = 1;記憶體存的是數字1 a = '1';記憶體存的是asic碼的1的值;

'\0'的asic碼值為0

char a=;不是字串;

char a[3]=;是字串;

字串以'\0'結尾的

字串列印就是遇到'\0'時跳出迴圈;

指標變數加減法:type *p;p+i = p+i*sizeof(type);

求陣列的位址列印出來就是陣列的首位址;

位址的指標以位元組為最小單位,不能單獨列印具體的位的值;同時是直接與硬體關聯的,並沒有在記憶體中儲存

不同型別的指標位址可以為不同型別的變數賦值,因為指標位址是沒有型別可言的,但是不同型別的指標位址有不同的長度,寫位址是沒有錯誤,但是讀位址有錯誤,要根據宣告時的型別翻譯成相應的型別,所以最好宣告相同的指標位址。

即:從首位址訪問sizeof()個位元組,在將這些位元組的二進位制資料流按照所宣告的型別進行解析。一共有兩個步驟

null(注意大寫) 為 0 指標變數可以賦值null

segmentation fault :訪問記憶體錯誤;(記憶體越界,陣列越界)

低位址位存低資料位稱為小端。

驗證:int a = 0x12345678;

int *p1 = &a;

char *p2 = &a;

for(i=0; i<4; i++)

強制型別轉換是臨時的只在當前語句有效,作用是為了消除警告

int 與 整數還是有區別的。

陣列名代表陣列首位址(int *p =a),或代表陣列總大小(sizeof(a))

*(p+i) = p[i]=*(p++)=*(a+i);  一開始並沒有宣告p為陣列,所以這就是陣列的本質,一塊連續的記憶體

但是*(a++)編譯是不能通過的

所有的指標變數大小都為4個位元組(32位系統而言)  宣告指標變數的型別影響的是訪問的位元組數

C語言知識點複習

最近一直在寫go的 c語言有些生疏,復讀了一遍 高質量c程式設計指南 將其中有些遺忘的知識點總結如下。1 標頭檔案功能 呼叫庫功能 型別安全檢查 2 宣告 int x,y x為int指標,y為int值 3 浮點變數和0比較時應與spsinon比較 4 多重迴圈巢狀時,長的迴圈應放在內層,以減少cpu...

C語言知識點 複習(1)

知識點總結 1.所有巨集定義 列舉常量 唯讀常量全用大寫字母命名,用下劃線分割單詞。2.不同型別資料之間的運算注意精度擴張問題,一般低精度向高精度擴張。3.sizeof在計算變數的時候,括號可以省略 在計算資料型別的時候,括號是不可以省略的。4.const應該改寫為readonly,是唯讀的變數,並...

C語言知識點複習(1)

閱讀 c語言深度解剖 總結一些已經生疏的知識點。定義和宣告的區別 定義,建立乙個物件,並為這個物件分配一塊記憶體,並定義乙個變數名 宣告,告訴編譯器變數名已經被匹配到一塊記憶體上了或預定變數名,使其不能被其他的記憶體繫結。他們的區別就在於,定義建立了物件並為這個物件分配了記憶體,宣告沒有分配記憶體。...