大家都知道在c語言中是沒有字串這個資料型別的,那我們如何來處理字串呢?事實上我們是把字串當成字元陣列來處理。
字串的實質是:字元陣列+』\0』,用反斜槓0來表示字串的結尾。
那當字串作為陣列的元素,我們如何操作呢?
char[5
]="hello"
;//字元陣列
那麼如果我們要表示:,該用什麼資料型別呢?
【指標陣列】
指標陣列是指陣列元素為指標的陣列;
指標陣列是由二維陣列演化而來
int a[2]
[3]=
;
我們都知道二維陣列可以看成是元素是陣列的一維陣列,也就是可以把上面改為:int a[2][3]=,}
,每一行用括號括起來。換句話說,可以表示為int a[2]=;
元素是陣列的陣列這裡的
a1[3]=
,a2[3]=
,既然如此,我們便可以宣告兩個指標p1,p2,由於陣列名是首位址,即int *p1=a1
,int *p2=a2
,所以我們可以得到int *a[2]=;
元素是指標的陣列【字串是一種特殊的陣列】
char str=
"hello"
;
字串=字串+『\0』
字串的名稱就是字串的首位址
我們宣告三個字串:
char str1[10]
="hello"
;char str2[10]
="welcome"
;char str3[10]
="string"
;
我們再宣告三個指標,分別指向三個字串
char
*p1= str1;
char
*p2= str2;
char
*p3= str3;
我們把三個指標放到字元陣列裡面
char
*string[3]
=;//因為存放的是指標,所以陣列名前要加星號
將p1,p2,p3用字串首位址代替
char
*string[3]
=
再將字串的值代入陣列
char
*string[3]
=
字串做元素的陣列,這個陣列的型別是字串指標型別,也就是char *型別。
我們來看個例子:
#include
intmain
(void);
int day=0;
printf
("input day(1...7):"
)scanf
("%d"
,&day);if
(day==
7&&day==0)
else
}
字串指標的性質
1.字串可以當作陣列來處理;
2.可以宣告乙個指標p,利用指標偏移量來訪問陣列;
#include
#include
intmain
(void
)return0;
}
字串與字元陣列的聯絡
1.字串被當做字元陣列來處理;
2.字串的首位址是字串名,字元陣列的首位址是陣列名,其性質相同;
字串與字元陣列的區別
1.字串有終止符『\0』,而字元陣列沒有;
2.可以通過指標型別來修改字元陣列的元素,但是不能修改字串中的字元;
C語言 陣列與指標 字元與字串
1 字元與字串 char c a 而不能寫出char c a 字元變數用單引號 而字串用雙引號。2 字元陣列與字元指標的初始化 char s 10 p strcpy s,hello word n 或者p hello word n 而不能用s hello word n y因s陣列名表示陣列的首位址是個...
C語言之字串與指標
1 字串的儲存與訪問 字串的訪問 char str n 第i個字元 str i 思考?以下寫法是否正確?char s1 n s1 welcome s1 welcome 錯誤!必須逐一賦值或使用函式,且陣列長度要足夠大。可以使用字元指標解決 char s s welcome 或 char s welc...
C語言 字串 指標
字串 1.字串 jack j a c k 0 用陣列儲存字串 char name 10 jack printf name 2.字串的一些定義 都是字串 0的ascii碼值是0 char name 8 it char name2 8 char name3 8 0的ask碼是0 char name4 8...