學習雜記(三)c語言

2021-07-30 12:35:20 字數 2351 閱讀 4363

陣列:一次記錄大量資訊的方式

特點:1,所有的變數型別一致

2,陣列是有順序的,陣列元素有已知的順序

3,陣列名為編號為0的元素的位址

陣列的初始化:

按照順序進行初始化,如果只初始化部分元素,後邊初始化為0;若無初始化,則為隨機數

注意:c語言不對陣列進行邊界檢查

陣列指標是指標變數可以被賦值,arr是乙個位址不可以被賦值

陣列作為函式引數時,傳遞的是0元素的位址,而不是整個陣列

二維陣列:一維陣列的陣列

maxtrix[i] -> *(maxtrix+1)   maxtrix[1][2] --> *(*(matrix+1)+2)

陣列指標:

int (*ptr)[3]; //大小為3的一維陣列的指標變數

int maxtrix[2][3]; ptr = maxtrix;

指標陣列:int *ptr[3]; //大小是3的一維陣列,元素都為int * 的指標變數

字串:在c語言中,是將字串作為字元陣列來處理,用字元陣列來存放字串

字元陣列的長度:字元陣列包含元素的個數

字串的長度:字串中非零字元的個數   字元陣列長度不等於字串長度

在c語言中,規定乙個字串的結束符號為『\0』

字元陣列的兩種輸入方式:

1,逐個字串輸入:printf("%c",c[i]);  scanf("%c",c[i]);get(c)

2,整個字串一次輸入:printf("%s",c);  scanf("%s",c);空格結束,gets(c);

編譯預處理:

hello.c 預處理 hello.igcc -e hello.c -o hello.i

hello.i 編譯 hello.sgcc -s hello.i -o hello.s

hello.s 彙編 hello.ogcc -c hello.s -o hello.o

hello.o 鏈結hello gcc hello.o -o hello

巨集 #define 識別符號  語言符號字串

在預處理的時候,用後邊的字串代替前面的識別符號

注意:字串常量裡的識別符號不會被替換

巨集定義的字串,盡量多的新增小括號

#ifndef  _檔名_h1,除錯程式的時候使用,用於新增或注釋log資訊

#define _檔名_h2,防止檔案重複包含

#endif

<> 優先從系統路徑/usr/include/下查詢標頭檔案

""優先從當前路徑下,也就是原始檔所在路徑下查詢,如果找不到,再到系統路徑/usr/include/下查詢標頭檔案

分檔案.h檔案:標頭檔案,對應原始檔的函式宣告,外部變數宣告,巨集定義,結構體型別宣告,列舉型別宣告

.c檔案:原始檔,函式的定義,變數的定義,函式的呼叫,變數宣告

標準輸入stdin 有快取快取的重新整理/清空

標準輸出stdout有快取1,快取區滿  2,遇到\n

標準錯誤stderr無快取3,遇到fflush 4,程式執行結束

結構體型別不同的一些資料放到一起,可以吧不同型別的資料進行封裝

結構體內部的資料,叫做成員

結構體可以使用{}進行初始化,類似於陣列的初始化

對結構體不可以整體進行操作,只能對最終成員進行操作

結構體可以進行巢狀

結構體指標:

訪問成員時,用->進行訪問,或者(*ptr).age

結構體陣列:

陣列中每個元素都是乙個結構體,訪問的時候先訪問元素再指定到具體成員

struct s_t leader[3];leader[0].name

函式傳參:

引數是結構體型別,傳參就是把結構體變數內容複製乙份(通常不傳結構體),用結構體變數的位址,指標為引數,傳遞位址,比較節省時間。

int main(int argc ,char *argv)

argc:引數的個數,包含可執行檔案的那個字串

argv:每個字串組成的向量

陣列的特點:1,型別一致 2,空間順序連續

共用體/聯合體

union 型別名;

不同型別的變數占用同一段記憶體空間,這樣的型別叫共用體。在同一時段,只能使用乙個成員變數

位斷:struct packed_data在乙個結構體中,一位bit為單位來指定某個成員所佔記憶體的長度,這種以位為單位的成員稱為位段或位域

unsigned int a:2;

unsigned int b:6;

int i; 

共用體和位段的應用:讀取乙個int型資料的一位元組:

struct p_data

;union

C語言 雜記

1 常量溢位 u16 adc temp 0 應為 u32 adc temp 0 for i 0 i 100 i adc temp 100 1.2 資料範圍溢位 將乙個數拆分為n個隨機數 for i 0 i 200 i break 可更正為 for i 0 i 200 i else 小於或等於0xff...

C語言 雜記

2n 要表示為 2 n printf d a 引號必須是雙引號,不能是單引號,否則報 error c2664 printf cannot convert parameter 1 from const int to const char conversion from integral type to...

C語言雜記

p是列印位址 指標位址 的,是十六進製制的形式,但是會全部打完,即有多少位列印多少位。32位編譯器的指標變數為4個位元組 32位 64位編譯器的指標變數為8個位元組 64位 在32位編譯器下,使用 p列印指標變數,則會顯示32位的位址 16進製制的 在64位編譯器下,使用 p列印指標變數,則會顯示6...