陣列:一次記錄大量資訊的方式
特點: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...