c語言指標的問題,int i 1 int p p i,此時 p 1。為什麼不能直接賦值 p i呢。

時間 2021-06-02 08:38:38

1樓:AGMCAI

答案很簡單,不要去在乎「指標」這個身份本質上p和i一樣,都是變數。

所以不妨試一下int i; printf(「%d」,i);

你會發現結果很奇怪。只是因為當你宣告乙個變數i,會從記憶體中找乙個空間,給它命了乙個名,叫做i。

至於這個空間裡面有什麼?誰都不知道。

因此,使用變數前要對變數進行初始化。

身為指標的p也一樣,只不過p儲存的不再是整數,而是某乙個整形變數的位址。

所以讓p指向乙個地方的話,那記憶體中原來是什麼樣,就是什麼樣。

所以直接寫*p=1實際上是通過間接的方式,給p所指向的整形位址的值賦值

因此,使用指標之前要對其進行初始化。要明確p指向的位置

2樓:Leslie Z

其實這個問題從星號* 的名字就能找到答案。

*名字叫做 value at (some address).

&名字叫做 address of (some value).

*是取乙個位址中的值,所以它後面跟的一定是乙個位址。

要使用*p的前提就是p一定是位址。

所以使用*p之前一定要先給p賦值其他變數的位址。如上。

3樓:kite丶

在C中,指標未初始化時你永遠也不知道這個指標指向處,因此,最後的問題是,

你不知道指向哪的記憶體位址被賦予了i的值。

而前面的很明確p是指向i的位址,i的位址所賦予的指是1

4樓:十月份

c語言裡的資料,你可以看作是房子,例如int, char,double,結構體等等。指標你就看作是房子上的門牌號。正常的邏輯是先建好房子,然後再給這個房子貼上門牌號。

如果房子都沒建好,那你這個門牌號貼在上面代表啥呢?

你這段程式問題就出在這裡。i就是房子,p就是門牌號。你必須先把i建好(也就是給i賦值),然後才能給i貼上門牌號。

一道關於C語言指標的問題?

亂碼君 array的意思是 array 0 這是個C語言語法糖,所以不用管它怎麼理解,array和 array是同乙個意思,記住它代表乙個值,就是陣列的起始位址即可。int 3 是強制轉換,就好比 int 是把值強制轉換為整數,int 3 是把值強制轉換為乙個陣列指標,這個指標指向長度為3的陣列,陣...

這個c語言問題用指標該怎麼寫?

看到這個感覺是時候安利一波C 了,這貨名字裡面也帶著個C,讀作C Sharp。首先定義好字串 strings1 There is a tree behind the house strings2 A big tree is cut down there 接下來三步走戰略開始 第一步,單詞拆分並去重 ...

請教乙個C語言指標陣列問題?

郭建波 陣列指標 也稱行指標 定義 int p 10 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是10,也可以說是p的步長。也就是說執行p 1時,p要跨過10個整型資料的長度。例 int p 4 該語句是定義乙個陣列指標,指向含4個元素的一維陣列。所以陣列指標也稱指...