1.指標和字串
沒錯,指標又出現了。。。。。
首先區分下:字元和字串
字串是以空字元(\0)結尾的char型別陣列
至於該怎麼表示字串呢,請您接著看:
用雙括號括起來的內容稱為字串字面量或字串常量,編譯器會在末尾自動加\0
如果要在字串內部用雙引號,要加====
字串常量屬於靜態儲存類別即在整個程式的生命期存在
和陣列類似的是:雙括號括起來的內容被視為(指向該字串儲存位置的)指標
在定義字串陣列時,如果人工指定大小,則一定要在數完數之後+1,當然啦,這個工作交給計算機也木有毛線問題,變長陣列的宣告方式也可以用
哎,這真的和陣列太像了,什麼字元陣列名就是指向首元素的位址之類的blablabla…就不贅述了
所以嘞,重點出來了有木有
我們得關注以下,哪些地方不一樣~~
ほら:字串有兩個副本,乙個是靜態記憶體中的字串字面量,另乙個在程式開始執行的時候才被儲存在陣列中
在陣列中或者用陣列形式定義的字串「++陣列名」是不被允許的,因為陣列的元素是變數,但是陣列名不是變數
但是在用指標形式定義的字串中,"++指標"木有問題
**如下:
#include
int main (
)
最後一行pt++的括號寫不寫都行,反正都是先解引再+1
如果想讓heart和pt統一:pt=heart;但是不能反過來啦,因為賦值運算子的左側必須是變數
如果想改變陣列元素的資訊,用前面寫的陣列的方法還是下面的指標的方法,都是可以的
*
(heart+6)
='w'
;
但如果使用指標的話。。。。讓我再鑽研鑽研。。emm,沒看懂。。
那就先到這吧,我今天的活還沒幹完,emm,明天見!
字串和字串函式之學習筆記(二)
好噠,讓我們接著上一次的問題開始 指標時,無法修改字串內容,因為這個字串放在記憶體的常量區,而記憶體的常量區時唯讀 但是如果用陣列的方式定義,會在儲存於記憶體常量區之後在棧上分配空間 容納字串,區別在於 用陣列定義的方式會產生副本,而指標的定義只是讓指標指向記憶體常量區的位址,所以,陣列方式才可以修...
字串和字串函式
字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...
字串和字串函式
1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...