1. 數組
1.1 一維數組
數組是一串連續的地址;
數組名是地址常量,代表數組的起始地址;
sizeof(數組名) 可得出數組的總內存空間;
?C 語言對數組不做越界檢查,使用時應注意;
?數組不初始化,元素隨機;
?1.2?二維數組
二維數組的定義:可以省略行,不可以省略列
在內存中的存儲是連續的,一維的,按行優先的
兩維數組可以看成由多個一維數組組成
二維數組行號相當于一維數組名
二維數組初始化:
?2. 字符數組
字符數組是數據類型為字符的數組
只不過其使用頻率較高,需要重點學習
2.1 字符數組初始化
字符數組分為一維數組與二維數組;
2.1.1 一維數組逐個字符初始化
?整型數組的默認值:0
?字符數組的默認值:\0
指針部分默認值:null
他們三個代表的都是 0 ;
?2.1.2 一維數組字符串常量初始化
?不同方式的打印:
注意
只有真正是字符串的時候,才用?%s 打印輸出;
在 linux 與 vs2022 環境下分別嘗試,出現了不同的結果,最好使用 putchar 打印字符數組;
以下是不同輸出格式打印輸出字符數組:
?C 語言中沒有字符串變量,用字符數組處理字符串;
注意字符串結束標志:\0
"hello"共五個字符,長度為五,但占六個內存;
該圖(字符串二維數組)更能詳細地表明字符串的內存存儲情況;
2.1.3 二維數組初始化
按照常規思路,二維數組可以這樣初始化;
對于二維字符數組,一般這樣初始化;
遍歷:
????????方法一:常規思想遍歷
? ? ? ? ?也可以用其他方法:
2.1.4 題目
控制臺輸入字符串并逆序打印輸出;
注意:gets() 輸出形式為字符串,默認追加一個 \0,且可能會有溢出,占據相鄰存儲空間;
2.2 字符串函數
字符串函數被封裝在頭文件 #include<string.h> 中
常用的字符串處理函數函數有:strlen,strcpy,strcat,strcmp
2.2.1 求字符串長度 strlen
返回字符串的實際/有效長度,不包括 “\0”
以下代碼測試中,“\0”后面的字符為無效字符,不會算作字符串的實際長度
此外,sizeof() 計算的是字符串所占的存儲空間大小,不同于strlen() 計算的實際長度
以下代碼是對字符串求長度,注意字符串默認以“ \0 ”結尾,因此兩函數值不同;
2.2.2 字符串拷貝函數 strcpy
格式:strcpy(字符數組1 ,字符串 2)
將字符串 2 拷貝到字符數組 1 中去,并返回字符數組 1 的首地址
注意:字符數組 1 必須足夠大;拷貝時連同 ’ \0‘ 一同拷貝