定義字串中陣列表示法和指標表示法的區別

2021-10-24 14:38:16 字數 1162 閱讀 5036

以下分別為陣列表示法和指標表示法宣告的字串:

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 輸出...