關於c語言的指向指標的指標和指標

時間 2022-11-02 09:40:02

1樓:

這個問題很好啊,其實如果你用printf列印p1和p的話,你會發現這兩個值是相等的,因為他們都是指標,c語言是不區分指標之間的差別的,一切指標都是指標,不管他指向什麼,但是當前面加上*號後,他們就有了區別,*p1很顯然是一個char型別,而*p這是一個char*型別。printf會把p1指向地址中的值取出來,當成一個char輸出,而把p指向的地址中的值取出來,當成一個指標輸出。如果無視資料型別輸出p和p1指向的地址,你會發現他們完全一樣。

你可以強制把*p轉換成一個char,然後輸出就會發現結果。

2樓:匿名使用者

儼然是不一樣的,p1和p所指的地方是一樣的,但兩個的型別不一樣,所以你用*進行解地址操作時,兩個的處理方法不一樣

p1是指向char型的指標,所以*p1代表了str[0][0]那個char型元素

p是指向char*型的指標,所以*p代表了str[0]這個char型陣列的首址

3樓:匿名使用者

你的*p是隨機值,肯定不是你想要的值!而*p1就是你想要的!原因,c語言裡允許未定義即可使用變數!所以你的**p同*p是兩個變數!是不同的!

4樓:一團亂

首先應該知道,這時候的str是二維陣列的首地址,也就是說,它相當於一個char**。

把str 賦值給p是允許的,但是賦值給p1是非法的。(雖然c語言能編譯通過)。

*p是去str[0]的地址。

*p是還是一個指標,所以列印出來是個整數。

而*p1是個char型,原來的地址被轉換成了char型,然後輸出了char的值。

5樓:匿名使用者

!@#%$^&()%@@%$^%*%^(&^(**&)*)^*%$#@!@!~@!q#$@133e58y08

關於C語言指標的指標的疑問,關於C語言的指標問題 指標的地址 1問題

month是指標陣列,每個元素都是一個char型指標,指向一個字串的首地址 p是二級指標,p month,p指向month陣列的首地址,也就是 january 的首地址的地址,p的值就是 january 的首地址,用 s 的格式輸出,就是字串 january 然後p month i,month是陣列...

關於C語言指標變數ppp的區,關於C語言指標變數 p p p 的區別

森祿欽春桃 首先搞明白一點,printf語句中表示式的執行順序是從右向左的,並且對於 q 首先進行解引用操作,再自增,即 q,q q 1 所以說第一個printf的輸出為22對於第二個printf,首先執行 q 再執行 p 對於 q 可以轉化為先執行 q 即輸出它的值,再執行 q q 1,最後輸出 ...

關於C語言指標問題,C語言指標的賦值問題

飛翔的蠍子大叔 關於int p1 123這個問題我看了很多資料,在這裡我發表一點看法,該問題非常好,這是c語言需要規範的地方。int p1 123 是非法操作,指標表示地址,地址 123?我是沒有見過這種操作。地址一般用二進位制 八進位制 十六進位制表示,123表示地址根本就是扯淡!這個語句的目的就...