指標系統學習4 字串與指標

2022-03-22 06:18:00 字數 1891 閱讀 4887

(1) 用字元陣列存放乙個字串,然後輸出該字串。

例題一:定義乙個字元陣列,對它初始化,然後輸出該字串。

#include void

main()

(2) 用字元指標指向乙個字串

例題二:可以不定義字元陣列,而定義乙個字元指標。用字元指標指向字串中的字元。

#include void

main()

對字串中字元的訪問,可以用下標方法,也可以用指標方法!

下標法舉例:將字串a複製為字串b

#include void

main()

*(b+i) = '\0'

; printf(

"string a is: %s\n

", a);

printf(

"string b is: ");

for(i=0; b[i] != '

\0'; i++)

printf(

"\n\n");

}

view code

指標方法舉例:將字串a複製為字串b

#include void

main()

*p2 = '\0'

; printf(

"string a is: %s\n

", a);

printf(

"string b is: ");

for(i=0; b[i] != '

\0'; i++)

printf("\n

");}

view code

例題:用函式呼叫實現字串的複製

用字元陣列作引數

#include void

main()

void copy_string(char

from, char

to) to[i] = '\0'

;}

view code

形參用字元指標變數

1 #include 2

3void

main()418

19void copy_string( char *from, char *to )

2025

26 *to = '\0'

;27}28

29//

丫的,記憶體出錯了,該記憶體不能被寫,為什麼? why??見第8,9行

view code

具體解釋:五大記憶體分割槽

在c++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。

棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。

堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動**。

自由儲存區,就是那些由malloc等分配的記憶體塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。

全域性/靜態儲存區,全域性變數和靜態變數被分配到同一塊記憶體中,在以前的c語言中,全域性變數又分為初始化的和未初始化的,在c++裡面沒有這個區分了,他們共同占用同一塊記憶體區。

常量儲存區,這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改(當然,你要通過非正當手段也可以修改,而且方法很多,在《const的思考》一文中,我給出了6種方法) 

優化:對 copy_string 函式還可作簡化

指標與陣列(二) 字串認知

用c語言實現各字串函式 一 字串比較函式strcmp strncmp strcmp int strcmp const char string1 constchar string2 功能 比較字串string1和string2大小 返回值 0,表示string1小於string2 返回值 0,表示st...

Python學習4 字串

1.python字串 python沒有字元,所有的都叫做字串,用單引號表示。2.python中字串,列表,元祖的相似性 1 訪問,都是用str i 來訪問第i 1個元素。2 切片,str i j 來擷取其中的一部分。3 拼接,若要向其中插入一部分,都要使用str i str2 str i 但是此過程...

指標系統學習3 多維陣列與指標

用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素。但在概念上和使用上,多維陣列的指標比一維陣列的指標要複雜一些。先回顧一下多維陣列的性質,可以認為二維陣列是 陣列的陣列 例 定義int a 3 4 則二維陣列a是由3個一維陣列所組成的。設二維陣列的首行的首位址為2000,則有 記憶體中...