1樓:帳號已登出
1、第一個是常量,不可變。指標指向常量區。第二個是變數,用陣列來裝,可變。注意字串是會在後面預設+\0。字元就不會。
2、加上*就是指標。char *p3就是一個陣列,陣列裡面指向一個char型別的值。所以你p3[0]能列印出a。
因為這個其實是優先順序的問題,如果你char(*p3)這個又不同了。。
char p3 = ;為什麼無法編譯。我倒要問你,雙引號「」和單引號''有什麼不同?答案在上面,都說了char *p3 = ; 這種是動態字串管理。
直接是用指標指向字串的。而裡面裝著的是指標地址為啥不用*取值是因為%s就是接受首地址的。。
如果你是初學者,這種問題對於初學者是挺難的,不過你別糾結,先放下就行了。
2樓:弒緋
第一個問題:
char *p="abc123abc"
這裡的意思是p這個指標指向的地址所對應的儲存空間被存入了abc123abc
舉個例子,你現在有一張名片(p),名片上記錄了一個地址(p所指向的地址),這個地址所對應的地方是一棟房子(p指向的地址對應的儲存空間),房子裡面被安排住進了某些人(abc123abc)
char p="abc123abc"
這裡的意思是p這個地址所對應的儲存空間被存入了abc123abc
同樣舉個例子,你現在知道一個地址(p),這個地址所對應的地方是一棟房子(p所對應的儲存空間),房子內被安排住進了某些人(abc123abc)
ps:這裡解釋的很籠統,只是為了讓你能看懂,某些細節還要你自己去完善,例如陣列名本身也是一個指標等等。
第二個問題:
char p3 = ;這樣編譯不過,因為你本身定義就錯了
正確:char p3=;
char p3=;
char p3="a1b1c1";
3樓:小龍
建議你看看字元陣列和字串陣列的區別,什麼都明白了。
c語言指標問題,C語言指標問題
記憶體對齊的緣故。p buf 作為一個指標,它的值是記憶體的某個位元組的地址。如果想要把 p buf 強制轉換版 成一個 unsigned int 型別的指權針,需要滿足一個必要條件,就是 p buf 的值必須能夠被4整除。之所以是4,是因為 unsigned int 是要佔4個位元組的 c語言結構...
關於C語言指標問題,求大神,C語言指標的問題,求大神!!
第一個函式的兩個指標是區域性變數,函式完了就銷燬了,換不換都一樣,第二個是直接操作指標指向的地方 記憶體單元 也就是直接操作變數。不恰當的比方,好比停車,有個圖紙記錄了每個車位停的什麼車,第一個就相當於另外拿了個圖紙畫了一下想要的位置,原來的圖沒變,函式結束後來的圖被扔了,原來的圖保留著,實際的車並...
C語言指標問題
你那是在swap內部交換了x,y,函式返回後,在swap內的改變不影響main函式中的x,y 如果改成下面的方式,或許可以。void swap int x,int y 第一樓的引數引用,只適用於c 不適用於c,這有差異的。void swap int x,int y 這隻交換了形參 x,y 的指標值,...