1樓:陽光的雷咩咩
如果是宣告比如int *p=後面應該跟地址
如果是先宣告int *p; 再*p = 後面應該是值
不過變數可以是值又可以是地址
c語言的指標問題。*(p+i)是代表取值呢還是取地址?
2樓:匿名使用者
定義int *p=a,那麼p+0就是
a[0]的首地址,
p+i就是a[i]的首地址,p+2就是a[2]的首地址,*(p+0)就是a[0][0]的地版址,*(p+1)就是a[1][0]的地址,*(p+2)就是a[2][0]的地址;而定義權int (*p)[4];代表p是一個陣列指標,指向一個4個 int大小的陣列,此時p=a之後,p就是一個指向sizeof(int)*4這麼大小的空間了,*(p+0)就是a[0]行的地址了,*(p+1)就是a[1]行的地址了,所以*p和(*p)[4]不是同一個指標,他們指向空間的的大小不一樣。
3樓:匿名使用者
首先,你應該明確指bai針dup的型別,是int *p 還是 int ** p,兩者都可zhi以指向陣列a的首地址dao。
如果你定義 int *p[4],這是版一個指標陣列,權那麼p實際上是一個常量。 *(p+i)與p[i]的意義一樣,是一個指標,或者說是陣列p中的一個元素。這個p與a看不出任何聯絡的。
4樓:匿名使用者
int *p=a
這是定自義指標,表示p是a[0][0]的地址,*(p+i)代表的是a[0][i]的值,
int (*p)[4]
定義一個陣列指標,*(p+i)就是a[i][0]的地址,*(*(p+i)+j)是a[i][j]這個值
5樓:與子如初見
int *p,則p是一
個整形指復針,指向一制個整形變數的地址。
int (*p)[4],p是陣列指標,指向的是一個含有四個整形元素的陣列的首地址。此時*(p+i)肯定是地址,因為p是陣列指標,p = a;,*(p+1)就相當於求出a[1]的首地址。
如果你不懂了你可以用**試一下,這樣的話印象就會深刻的。
c語言問題求教 關於指標變數問題
你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...
c語言指標問題?指標和指標變數我區分不了求指
其實這裡有這麼幾點需要明白 我們通常會先宣告定義一個變數。如 int a a 10 那麼我們就在記憶體中開闢了一塊空間,我們把這空間用a來標記。我們把a叫做整型變數!很容易理解a變數此時的值或內容是10,但還有一個問題你要知道,我們怎麼樣才能找到a在記憶體中的位置?這就是用這塊記憶體的開始的地址來標...
C語言題目,不知道答案應該是c還是D,求解答和解釋,謝謝
典型的死迴圈 在c語言中,沒有邏輯型別。用非0表示邏輯真for語句中,第二個用於迴圈判斷的表示式,k 1,計算的結果永遠為1。即條件成立 所以,選d 選d無限迴圈。迴圈條件是k 1,注意這是賦值 而不是比較 條件永遠成立。d判斷條件k 1 一直為真,所以死迴圈 c語言選擇題,答案為c,求解釋,謝謝。...