1樓:
*(p+i)=i;是指將i(i是變化的),賦給以p為首址的控制,假設p的位址為0x20,則第乙個數為0(i從0開始,到9),0x21位址的值為1,以後的位址類似。
如果僅是*p=i;則只會在0x20(還是假設p的首址為0x20),變化值(即0x20的值依次為0,1,2....),0x21及後續位址不會被賦值。
2樓:匿名使用者
這種情況你可以 把它看成陣列
*(p+i) -> p[i] == a[i]剛賦值後的指標是指向 陣列的起始位置的即 a[0]+i 其中i就表示陣列下標
*p -> p[0] == a[0]
3樓:匿名使用者
這個是對a陣列賦值,你要是*p=i的話,那麼需要p是變化的,你說是不是
但是程式中p沒有變化,難道你只對a的第乙個單元賦值???
如果for迴圈中這樣 for(i=0;i<10;i++,p++)或者*p++=i
4樓:匿名使用者
p=a;
這句話表示p是a[0]的位址
p+i就是a[0+i]也就是a[i]的位址*(p+i)=i就等價於a[i]=i
而*p=i等價於a[0]=i
最後程式的輸出是:
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
a[8]=8
a[9]=9
5樓:
*(p+i) = i; 相當於 p[i] = i; 實際效果是 a[i] = i;
*p = i; 相當於 p[0] = i; 實際效果是 a[0] = i;
在c語言中p*=i是什麼意思啊
6樓:風若遠去何人留
*=是c語言的特殊操作符號,呼叫形式為
a*=b;
其等效於
a=a*b;
但是用*=的形式,可以減少**輸入,同時還可以提高執行效率。
p*=i也就是p=p*i, 即將原始的p值與i值相乘, 結果賦值給p。
c語言中類似的符號還有+=, -=, /=, %=, ^=, |=, &=等等。
7樓:
親,你確定你的表示式沒有寫錯嗎?如果確定,那麼我也不知道;如果寫錯了,有兩種形式,是定義乙個指標「*p = i; 」裡的*p是p的值了,「 p = &i」是p指向了i的位址,也可以理解為將i的位址付給了指標p。
8樓:z龍傳正
就是讓p等於原p的值和i的值的乘積
9樓:**水心
是p=p*i的簡寫,復合語句,很常用的
10樓:至尊智者
就是 p=p*p 這種叫復合賦值語句
11樓:奧貝利科斯
p = p*i
還有 p+=i
p-=i等等
不要和*p = i混淆
c語言問題。 *p+i與*(p+i)有什麼區別啊?
12樓:匿名使用者
寫個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了。
13樓:匿名使用者
其實在定義時你這樣理解就很清楚答案了:
char *p;理解成char (*p);*p在一起是乙個char。那麼,*p+i就是*p的值加上i,而*(p+i)是在先p+i再*操作,*是什麼意思呢,在這裡是「取值」。所以,*(p+i)是把指標移動i個位置,再返回前位址的值。
14樓:匿名使用者
位址加i,位址變了。位址
c語言(*(*p+i))是什麼意思
15樓:咎婕竹俊雅
簡單的知識點:陣列的下標是從0開始的。
舉例來說,陣列有10個元素,陣列的下標是0到9;第乙個元素的下標為0,第二個元素的下標為1。
16樓:告悠蒯從蓉
*p+=i相當於*p=*p+i
p是乙個指標,上述**相當於把p指向的
變數的值加上i,假設p指向int型變數,內參考**容:
inta=5,i=3,*p=&a;
*p+=i;
//此處相當於a+=i,也就是a=a+i,此時a的值變成8
17樓:匿名使用者
(1)如
來果定義int *p,p=a[0];則p是指向二維源陣列首個元素的指標變數。
p=a[0]等價於p=&a[0][0],p+1等價於a[1]等價於&a[1][0]
(2)如果定義int (*p)[4] ,p=a;則p是指向二維陣列第0行的指標變數。
a等價於&a[0],*p等價於a[0];所以**p等價於a[0][0];
(*(*p+i)+j)等價於:陣列元素a[i][j]
18樓:匿名使用者
p應該是指向二維陣列的首位址
(*(*p+i))代表的是第一行第i列的值
19樓:劉麗平
指標所指的陣列中的元素
20樓:看灰過來了
看著像是二維陣列第0行第i列的元素
c語言中s*=*(p+i)是啥意思?
21樓:夢想——起航
表示式中p應該是個指標,指向乙個陣列,如a[10]陣列a的首位址傳輸給指標p,*(p+i)就是陣列的第i個元素a[i]。
表示式「s*=」就是s=s*()
於是,該表示式即為s=s*(*(p+i))也就是s=s*a[i]
表示式中第乙個「*」是乘法運算
第二個「*」是指標運算子。
22樓:匿名使用者
s*=*(p+i);
s=s*(*(p+i));
第乙個*是乘法運算,第二個*是取指標指向位址中的值的操作。
例如:int *p;
p=new int[4];
*p=1;
*(p+1)=2;
int i=1;
int s=2;
s*=*(p+i);//s=4
23樓:土杜土杜
等價於:s = s * (*(p + i));
c語言中,指標*p[i]與p[i]有什麼卻別?分別代表什麼意思?
24樓:匿名使用者
若果我還沒記錯的話:
你的問題:你這裡問的是指標
p[i]:陣列p的[i]這個地方放的值
*p[i]:陣列p的[i]這個地方放的值(這當做乙個位址)的值,即p[i]這個地方放了乙個位址(相當於另外乙個p[i]),然後用*讀取他所代表的值。----即我所說的:
陣列p的[i]這個地方放的值(當做乙個位址)的值
25樓:某李某
*p[i]指的是裡面的值。
p[i]子的是位址,也就是裡面的值所在的位址。
這個c編寫的程式不懂什麼意思啊,哪位大神能詳細再詳細的解釋解釋嗎
首先要把輸入的ch轉化一下統一的大小寫,最簡單應該是把ch直接減或者加乙個ascii碼的差值,然後switch裡就變成 case a action1 a,b break case b action2 a,b break default putchar a 或者case a action1 a,b b...
下面這個C語言程式直接用變數運算就不能發生交換,而用指標的引用運算為什麼能
這個計算順序與編復譯器的實 制現有關,我用 bai g 得到的結果是 2,1。編譯出的程式 du的計算順序大 zhi致是這樣的 從dao左往右,先計算 p,得 1,放入暫存器,然後 略 用不用指標都是一樣的,q p p q q 能交換的話,b a a b b 也可以。一 c語言裡沒有bai引用du這...
C幫忙看一下這個程式是什麼意思,只有解釋我打了雙斜槓
s.a s.top 這東東是棧頂元素 void init sqstack s 宣告 初始化棧 函式 elem pop sqstack s 宣告 取棧頂元素函式 void push sqstack s,elem e 宣告 出棧函式 void init sqstack s void push sqsta...