char陣列和指標的區別

2021-08-20 09:47:59 字數 529 閱讀 2646

乙個簡單的字元分割函式引發的思考。

char * segstr1(const char * psrc,int n)

; char *pseg = ptrsrc;

for (int n = 0;nsegstr2函式會報錯:error c2105: 「++」需要左值。

為什麼會出現這種情況?

此錯誤說明segstr2中的自增操作是錯誤的,是對常量的自增。而segstr1則不會發生此錯誤說明segstr1中的自增操作是對變數的操作。

由此引出char陣列和指標的區別:

ptrsrc陣列儲存的內容存放在堆或者棧中,是可以進行修改的;但是整個陣列的位址(和&ptrsrc[1]相等)存放在常量區是不可以修改的。

pseg指標儲存的內容是存放在常量區的不可以進行修改,但是pseg本身是存放在常量區的不可以進行修改。

char *pseg = ptrsrc;  pseg的指標指向ptrsrc陣列,對pseg指標進行操作就可以對ptrsrc進行依次賦值。

char陣列和char指標

在c c 中,指標和陣列在很多地方可以互換使用,這使得我們產生一種錯覺,感覺陣列和指標兩者是完全等價的,事實上陣列和指標是有很大的區別的。1.兩者在含義上的區別。陣列對應著一塊記憶體區域,而指標是指向一塊記憶體區域。其位址和容量在生命期裡不會改變,只有陣列的內容可以改變 而指標卻不同,它指向的記憶體...

char指標與char陣列的區別(非常詳細!)

首先看指標 char p helloworld 在這裡p是乙個變數,其型別為指標型別,並且指向乙個字串,字串內容為 helloworld 如果要訪問p 2 的話,就需要先從p中取出位址,該位址為 helloworld 的首位址,然後再加上偏移量2,就得到了 l 這個字元,所以其訪問的方式為先從p中取...

char陣列和char指標應該注意的

陣列要麼在靜態區被建立 如全域性陣列 要麼在棧上被建立。陣列名對應著 而不是指向 一塊記憶體,其位址與容量在生命週期內保持不變,只有陣列的內容可以改變。指標可以隨時指向其他型別的記憶體塊,它的特徵是 可變 所以常用指標來操縱動態記憶體。指標遠比陣列靈活,但也更危險。1.返回指向棧上的記憶體的指標 c...