※字串陣列: (一) 宣告 同時 初始化: (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)
沒有留言:
張貼留言