以下分別為陣列表示法和指標表示法宣告的字串:
const
char
*pt =
"something is pointing at me."
//指標表示法
char ar=
"something is pointing at me."
//陣列表示法
初始化陣列是把靜態儲存區的字串拷貝到陣列中,而初始化指標只是把字串的位址拷貝給指標。(動態儲存區在呼叫函式時臨時分配單元,靜態儲存則是程式整個執行時間都存在)
那麼初始化字元陣列來儲存字串和初始化指標來指向字串(這裡的意思是指向字串的首字元)到底有何區別?
兩者的主要區別是:陣列名ar1是常量,而指標名pt1是變數。
兩者有相同的使用方法,輸出時使用指標表示法和陣列表示法均可。
注意:pt++不可以,因為陣列名是常量。
假如想讓ar和pt統一,可以這樣做:
pt = ar;
//pt指向陣列ar的首元素
初始化字元陣列和初始化指標區別最大的一點在於,初始化字元陣列可以改變陣列中元素的值:
char ar=
"something is pointing at me."
ar[1]=
'm';
//可*
(ar +1)
='m'
;//亦可
而我們在初始化指標時,一般都會在前面添乙個const,這是因為如果沒有const限定符作限制,使用者貿然修改字串的話,整個程式中所有相同的字串字面量都會被修改。
總之,如果要修改字串,就使用初始化字元陣列的方式。如果要顯示固定的字串,就使用指標陣列,因為指標陣列的效率更高。
關於字串陣列,指標定義陣列
今天測了乙個程式,發現了一些不懂的問題,下面貼上 和自己的一些想法。1.用指標指向乙個字串,並嘗試修改字串。char p hello p 2 c printf the word is s n p 編譯沒有問題,但是執行沒有任何的輸出。我們都知道p指向 hello 的首字母 h 的位址,但printf...
字串最小表示法
最小表示法的定義 給定乙個字串,不斷地把最後乙個元素移到最前面,可得有n個這樣的字串 稱這n個字串是迴圈同構的 那麼最小表示就是這n個裡面字典序最小的乙個 怎麼求最小表示 wrong 最樸素的方法,把每乙個這樣的字串求出來,然後一一比較,找到字典序最小的迴圈同構串 然後資料範圍變大肯定會超時 那麼正...
ruby 字串表示法
字串文字通常位於雙引號之間,也可以使用單引號。this is a string this is also a string 但是在一般情況下,但在一些情況下,單引號的行為方式與雙引號有所不同。最主要是不同的字元插值在單引號中不起作用。如 puts two plus is puts two is 輸出...