標籤:
1、字串
用“”引起來的內容,就是字串。
在C語言中有沒有專門的字串的變數? 沒有
所以我們使用字元數組來儲存字串。(把字串的每一個字元儲存到字元數組的每一個元素中,並且會多存放一個‘\0’)
‘\0‘ 字串的結束標記,ascII碼錶中值是 0 對應的字元。NUT,NULL
2、字元數組
1)定義
char 數祖名[長度];
char str[200]; 表示定義一個長度為200的字元數組,如果用來儲存字串,則字串的最大長度是199,留出一個給‘\0‘
char str[3]={‘a‘,‘b‘,‘c‘}; //不能以%s進行輸出
2)初始化
(1)完全初始化
char str[3]={‘a‘,‘b‘,‘c‘};
(2)部分初始化
char str[3]={‘a‘,‘b‘};
(3)用字串進行初始化
char str[10]="itcast"; //佔用了7個位元組因為‘\0‘佔用了一個
char str[10]={"itcast"};
3)字元數組的引用
如果把字元數組的內容逐個取出,str[0]、str[1]....str[n-1];
%s 字串的格式控制符把字元數組整體進行輸出
%s 給一個字元數組的首地址,系統會自動從首地址開始連續讀取直到遇到‘\0‘結束
4)儲存細節
字元數組儲存的細節:
連續的一片儲存地區(地址是連續的),每個字元佔用1個位元組
計算字元數組(字串)的長度
針對這種定義方法,求長度(會包含‘\0‘):char str[]="abc"; //4
sizeof(str)/sizeof(char) = sizeof(str);
strlen也可以計算字串的長度(不包含‘\0‘):
strlen(str); //3
3、字元數字和普通數組的區別
char str[]; //只能存字元型資料
int arr[]; //只能存整型 資料
4、常見的字串函數6個
gets(數組名) 表示擷取從鍵盤數輸入的字串(可以接收空格)
puts(數組名) 表示講數組的內容輸出到控制台(可以自動換行)
strcat(數組名1,字串) 表示把字串連結到數組1中(回覆蓋數組1的\0)
strcpy(數組名1,字串) 表示把字串拷貝到數組1中,會覆蓋數組1中原有的內容
strcmp(字串1,字串2) 比較兩個字串的大小
字串1>字串2 >0
字串1<字串2 <0
字串1==字串2 ==0
strlen(數組名) 計算字串的長度(不包括\0)
5、什麼是地址?什麼是指標?
記憶體被作業系統劃分了若干個儲存單元,每個單元是1個位元組(8位)
每個位元組都有位元組的地址,這個地址就叫指標。
地址和記憶體單元是兩個不同的概念
地址是記憶體單元的編號
記憶體單元是地址對應的實際儲存內容。
6、指標變數
用來存放地址的變數,就稱為指標變數
1)定義
資料類型 *指標變數名 ; //指標變數是個變數,指標是常量
"*" 在兩個場合起作用:
定義指標的時候使用 int *a; // *表示定義一個指標變數
在指標對應的儲存單元內容的時候用 *a //表示擷取指標變數中存放的地址所對應的儲存內容
2)初始化
指標定義完成以後,要初始化,如果不初始化,則這個指標成為野指標
可以用NULL 也可以用 0 進行初始化,表示這是一個null 指標,什麼也不指。
正常情況下的初始化
int a;
int *p1 = &a;
3)存取方法
*指標變數 //表示擷取指標變數中存放的地址所對應的儲存單元的內容
7、指標的使用情境
1)間接修改變數的值
8、多級指標
指標的指標
9、指標為什麼要區分類型
1)資料有不同類型,要指向不類型的資料也需要不同的指標
2)指標是一個地址,*指標變數 不知道取多少個位元組的內容
C語言中的字串數組 指標