c語言的指標問題p i 是代表取值呢還是取地址

2021-04-21 23:05:15 字數 2359 閱讀 5777

1樓:匿名使用者

定義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]不是同一個指標,他們指向空間的的大小不一樣。

2樓:匿名使用者

首先,你應該明確指bai針dup的型別,是int *p 還是 int ** p,兩者都可zhi以指向陣列a的首地址dao。

如果你定義 int *p[4],這是版一個指標陣列,權那麼p實際上是一個常量。 *(p+i)與p[i]的意義一樣,是一個指標,或者說是陣列p中的一個元素。這個p與a看不出任何聯絡的。

3樓:匿名使用者

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]這個值

4樓:與子如初見

int *p,則p是一

個整形指復針,指向一制個整形變數的地址。

int (*p)[4],p是陣列指標,指向的是一個含有四個整形元素的陣列的首地址。此時*(p+i)肯定是地址,因為p是陣列指標,p = a;,*(p+1)就相當於求出a[1]的首地址。

如果你不懂了你可以用**試一下,這樣的話印象就會深刻的。

c語言問題。 *p+i與*(p+i)有什麼區別啊?

5樓:匿名使用者

寫個c程式解釋吧。

#include

int main()

, *p = a;

printf("%d %d\n", *p + 1, *(p + 3));

return 0;

}輸出為 10 6;

為什麼呢?因為 *p = a 把 a 陣列的首地址的值放在 p 處,所以p = a,*p =a[0]= 9 => *p + 1 = 9 + 1 = 10.

p + 3 就是a陣列的首地址往後移動3位,即p = a[0], p + 3 = a[3]的值,就是6了。

6樓:匿名使用者

其實在定義時你這樣理解就很清楚答案了:

char *p;理解成char (*p);*p在一起是一個char。那麼,*p+i就是*p的值加上i,而*(p+i)是在先p+i再*操作,*是什麼意思呢,在這裡是「取值」。所以,*(p+i)是把指標移動i個位置,再返回前地址的值。

7樓:匿名使用者

地址加i,地址變了。地址

c語言中,指標*p[i]與p[i]有什麼卻別?分別代表什麼意思?

8樓:匿名使用者

若果我還沒記錯的話:

你的問題:你這裡問的是指標

p[i]:陣列p的[i]這個地方放的值

*p[i]:陣列p的[i]這個地方放的值(這當做一個地址)的值,即p[i]這個地方放了一個地址(相當於另外一個p[i]),然後用*讀取他所代表的值。----即我所說的:

陣列p的[i]這個地方放的值(當做一個地址)的值

9樓:某李某

*p[i]指的是裡面的值。

p[i]子的是地址,也就是裡面的值所在的地址。

p是指向陣列中某個特定元素的指標 那麼p+i 與 *(p+i)、*p++有什麼區別? 請詳細說明下~ 謝謝~~~~~~

10樓:

p+i :表示第i個元素的指標,其值為第i個元素的地址。

*(p+i):表示第i個元素,其值為第i個元素的值。

*p++:表示取p所指元素的值,並將p指向下一個元素。

11樓:完蛋鬧

如果只是baip+i的話,相當du什麼都沒做,p還是指向zhi那個元素(在這我假設是dao

回data)...

*(p+i)表示的是從元素data開始,向答後數i次,數到的那個數就是*(p+i)表示的值...

++的優先順序比*高,所以*p++表示的是data後面那個元素的值...

12樓:孫永超

p+i是一個地址陣列a[i]的地址,*(p+i)相當於a[i]為一個值,*p++相當於*p;p++這兩條語句

c語言指標問題

因為我的數字很大,用指標的話效率高。這句話不對啊,數字大小和運算時間沒有必然聯絡,比如100乘以101和1000乘以1001的運算時間是一樣的。另外,現代的編譯器優化能力非常強,不必什麼都得自己去優化。你的 就是一個例子。void main int pa 3 a for int k 0 k 2 k ...

問c語言指標問題,問一個c語言指標問題

不行,首先你要有一個陣列存放字母,然後這個二維陣列,行中表示下一個元素應該是a i j,你這樣寫的話就是跳到了下一行了,二不是下一個字母了,你需要知道指標只能指向已存在的物件。如果物件本身並不存在,那麼是無法指向的。你舉的例子裡,沒有說明 b 在哪個位置,從何指出b的地址呢。你要是想用p指向a的地址...

c語言中變數指標輸出問題,C語言中變數指標輸出問題

這和printf用 s的規則相關。首先ps是一個指向字元型資料的指標 printf用 s修飾輸出時需要提供一個指標,這個指標指向的資料是字元型的,但printf將按照字串的規則來進行輸出,也就是輸出完這個指標指向的字元後,自動將指標加1,並判斷指向的字元是否為0,否則將輸出直至指向的資料為0為止,或...