在c語言中,指標和陣列名都表示位址,但兩者卻有很大的不同之處,對於初學者來說一定要弄清楚兩者的區別。
首先,我舉個簡單的例子:
char *p1="hello!"; //定義字元型指標p1,並將指標p1指向字串「hello!」的首位址。
char s[10]="hello!"; //定義陣列s,並將其初始化賦值。
然而,如果char s[10]; s="hello!";這樣就會報錯,為什麼呢?原因很簡單,因為陣列名是常量。
言歸正傳,我現在舉兩個簡單的例子:
例子1void main()
char p="abcdef";
p[0]='y';
printf("%s",p);
在本段程式中輸出ybcdef
例子2void main()
char *p="abcdef";
p[0]='y';
printf("%s",p);
本段程式卻丟擲異常,為什麼?
在例子2中,char *p="abcdef",指標p是儲存在堆疊區,但字串是常量,儲存在常量區,只是指標p指向了儲存在常量區的字串首位址,此時不能改變常量區的字串的值。
在例子1中,char p="abcdef",此處的賦值是將常量區的字串「abcdef」拷貝到了堆疊區的陣列p的空間了。陣列p是在堆疊區開闢了空間,此時是可以修改字串的值,因為修改的是堆疊區的字串的值。另外此時的陣列名p是堆疊區中的」abcdef「的首位址。
另外如果你想更好的提公升你的程式設計能力,學好c語言c++程式設計!彎道超車,快人一步!筆者這裡或許可以幫到你~
程式設計學習:
程式設計學習:
C語言學習筆記 指標 指標陣列與陣列指標
指標陣列 是乙個陣列,陣列元素為指標 陣列指標 是乙個指標,指向陣列的指標 例如 int p1 5 int p2 5 對於語句int p1 5 因為 的優先順序要比 要高,所以 p1 先與 結合,構成乙個陣列的定義,陣列名為 p1,而 int 修飾的是陣列的內容,即陣列的每個元素。也就是說,該陣列包...
C語言指標陣列與陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標 指標與陣列
1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...