C語言指標

2023-01-04 01:45:43 字數 1144 閱讀 2201

1樓:10伯樂

正如您所說 a是一個常量,常量是不能修改的變數。不可以修改,不代表不可以引用呀,a+i 只是借用a的值(陣列的首地址)來訪問其他成員,實際上並沒有改變a的值。但是換成a++ 執行之後a的值就改變了,被修改了,編譯當然通不過啦。

這道題中的a是陣列的首地址,要是改變a的值,那陣列不是也改變了嗎?所以,一定是不能改變的,可以引用他的值。

2樓:手機使用者

的p一定是一個指標型別。

*操作符返回某個指標所指的型別的值

&操作符返回某個型別變數的儲存地址

下面來看:假如有一個整型變數i,它的值是100,儲存在地址0x000000f0上(不要在意地址的合理性,僅是假設),p是指向i的一個整型指標(即int *p = &i),p儲存在地址0x000000f4上。下面:

*p 表示p所指整型的值,即i的值,10

&p表示整型指標p的儲存地址,即0x000000f4*&p表示儲存在0x000000f4上的整型指標變數的值,即指標p的值,即0x000000f0(變數i的地址)

所以你的答案應該是:p與*&p一樣,而*p與i一樣

3樓:匿名使用者

應該是:

for(p=a;p<(a+10);p++)printf("%d",*p);

a是永遠指向開闢的陣列的第一個元素的,不能自增。

4樓:最方便的

你這裡有個明顯的錯誤 因為a是陣列名也就是指標 所以你定義p也應該是指標形式;int *p。

正確的是:

#include"stdio.h"

void main()

5樓:陳行

陣列名在記憶體中就代表一組資料的首地址,它是一個常量,是固定不變的,執行a+i操作,a的值始終沒有改變,而執行a++操作的話,a的值就改變了,相當於首地址就改變了。

6樓:匿名使用者

a的指標是固定的。a++相當於a=a+1,每次迴圈後那麼陣列首地址加一,陣列會跑到**去了呢?呵呵!所有陣列首地址a是不能改變的

7樓:匿名使用者

陣列名是一個地址常量,對常量進行a++操作是非法運算,另外a是常量不會變的,所以a<(p+10)始終是成立的。

c語言空指標野指標通用指標,C語言 空指標

野指標就是不知道指向 或者說不知道指向的記憶體是否可以使用,一般都是剛剛宣告但沒有初始化的指標。空指標不是指向常數0,只指向地址0,即null,其實換句話說,指標的本質就是地址嘛,空指標就是指標本身的值 地址 為0 空指標的作用是防止野指標的出現,因為我們不能知道野指標到底指向 所以我們也無法判斷一...

c語言行指標和列指標,C語言行指標和列指標

在任何時候 抄都不能定址,它是用bai來取地址的.p i 在任du何時候zhi 都等價dao於 p i p i j 其中p是int x 型別的 在任何時候都等價於 i x j x是一個變數.int a 10 20 這裡x 20 int a 20 10 這裡x 10 c語言沒有什麼行指標,列指標.一維...

c語言指標

1 c 3 超過陣列範圍了,陣列下標從0開始,c 0 c 1 c 2 2 pc 3 也超過範圍了啊 3 c 指向c 1 這個值 應該是這個正確吧 4 c已經是陣列第一個元素的地址了,c再取地址又亂套了 pc c當然不可以寫成pc c了,那樣意義全變了。可以拆成兩句 char c 3 char pc ...