※字串陣列:
(一) 宣告 同時 初始化:
(1) char str [4] = { ‘a’, ‘b’, ‘c’, ‘\n’ } ;
(2) char str [ ] = { ‘a’, ‘b’, ‘c’, ‘\n’ } ;
(3) char str [4] = " abc " ;
(4) char str [ ] = " abc " ;
(二) 先宣告 再 assign:
(1) char str [4] ;
str [0] = ‘a’ ;
str [1] = ‘b’ ;
str [2] = ‘c’ ;
str [3] = ‘\n’ ;
(2) 錯誤的寫法:
char str [4] ;
str [4] = "abc" ;
(3) char str [4] ;
scanf ( "%s", str ) ;
(4) 會有問題:
char str[4] ;
for ( i=0; i<4; i++ ){
scanf ( "%c", &str[i] ) ;
}
(三) 已經宣告且 已經初始化 或 assign 還是可以改變其單獨的 element。
但只能一個一個element改變。
(四) 但如果 str 是以陣列型式宣告 即 char str[4],則
陣列名稱指標 str :
(1) 無法再將其他位址再指定給 str!(以指標型式宣告可以)
(2) 無法再第二次以 "efg" 方式重新 assign。
(五) 字串:
char str[4] = "~" ;
printf ( "%s", str ) ; —————字串
printf ( "%p", &str ) ; ————-位址 (第一個element 的位址)
printf ( "%c", *str ) ; ————-第一個element 的值
※字串指標:
(一) 宣告 同時 初始化:(只有一種方式)
char *str = "abc" ;
(二) 先宣告 再 assign:
(1) X 不行!無法一個一個 element 做 assign。
(2) char *str ;
str = "abc" ;
(3) X 不行!不能用在 scanf。
(4) X 不行!不能用在 scanf。
(三) 已經宣告且 已經初始化 或 assign ,無法改變其單獨的 element。
只能一次全部改變:str = "efg"。
(四) 但如果 str 是以指標型式宣告 即 char *str,則
指標名稱 str :
(1) 可以將其他位址再指定給 str!(以陣列型式宣告不可以)
(2) 可以第二次以 "efg" 方式重新 assign。
(五) 指標:
char *str = "~" ;
printf ( "%s", str ) ; —————字串
printf ( "%p", &str ) ; ————-位址 (第一個element 的位址)
printf ( "%c", *str ) ; ————-第一個element 的值
星期四
c語言 字串和字串指標
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言