1樓:匿名使用者
a[1]是陣列的第2個元素(第一個是a[0]), 所以 a[1]的地址是陣列的首地址+1,陣列的首地址也可以用 a 表示,所以 a+1是 a[1]的存放地址,所以*[a+1]=a[1]
2樓:匿名使用者
a[1]的值存在a+1這個地址中*(a+1)就是取出這個地址中的內容,他們都是同一個東西當然值都一樣
c語言中,&a+1和&(a+1)的區別是什麼
3樓:匿名使用者
語句中,b = *a+1 -- 指標a 指向的數值加1,*a 是數值, b 等於 那個數值 加 1。
或 把a看成陣列元素 b = a[0] + 1;
*(a+1) -- 指標 (a+1) 指向的數值b = *(a+1) -- 可以看成陣列元素 b = a[1];
4樓:匿名使用者
a是指標?是的話,&(a+1)就是a指標指向的地方+1(型別)的位置;若是指向的是陣列的話,&a+1就是增加整一個陣列的地址了。比如int b[8],*a=b,&a+1就是增加4*8=32個位元組了。
5樓:聽不清啊
c語言中,
"a"佔2個位元組,一個'a'和一個'\0'(字串結束符),它是一個字串。
'a'就只佔一個位元組,即單個字元'a',它是一個字元。
6樓:匿名使用者
c語言為了使寫法更方便,單條語句更簡短,增加了縮寫形式。
這兩種方式是一樣的,沒有任何區別。
除此之外,還有a *= 1,a %= 1,只要是操作符都可以。
7樓:我是你0爸
呃,,,樓上的各位都沒有答到本質上 從本質上講,「a」是一個指標常量,而'a'則是一個數值。也就是說,在編譯器看來,「a」的值是一個地址(比如:0x84f39ea0),而'a'的值則是a的ascii碼(即97)。
樓主用printf列印這兩個值看看就知道了 另外,當「」裡的字串有多個字元時,它指向字串的第一個字元。
8樓:匿名使用者
&a+1是a的地址加上1,&(a+1)是(a+1)的地址
&是地址運算子和引用運算子
9樓:匿名使用者
注意,後者是非法的。
10樓:匿名使用者
int b[2];
int *a;
a=b; //a指向陣列b首地址,暨b[0]的地址*a + 1 // *a就是取a指向地址的值,暨b[0],所以*a+1 == b[0]+1
*(a+1) // a+1,指標+1,就是指標指向下一個地址,暨b[1]的地址,所以*(a+1)== b[1]
11樓:燕清揚
例如a=2;
a++;輸出結果為2;但是記憶體中它的值自加1了。(先輸出a再運算)例如a=2;
++a;輸出結果為3;記憶體中也是3.(先運算a再輸出值)。
例如a=2;
a+=1;意思等同於a=a+1;
12樓:匿名使用者
取a的地址加1
取a+1的地址
13樓:匿名使用者
a++:a先建立自身的一個副本,然後a自增1,最後返回副本的值a+=1: 事實上相當於++a
a=a+1: 雖然有點雷同於a+=1,但不同的是此時右值的a和1做相加操作,形成一個副本然後賦值給a,所以有額外操作
++a:將a自增1並返回a
鑑於a++和++a的差別,c++primer建議用++a作為for迴圈的遞增量。
以上討論不僅限於int,還著重於對類的過載設計時的考慮。
14樓:認不倒你
&a+1 :a的下一個位置的指標
&(a+1): 錯誤
15樓:
事實上是一樣的
a>>=1的意思就是a>>1並賦值給a;
可能執行的效率會有錯
16樓:曉呈呈
a++ 先取值再自加
++a 先自加再取值
a+=1 等同 a=a+1
17樓:匿名使用者
這裡的a=&a[0][0];
a+1=&a[1][0],也就是過了一個a[0][1],因此是加了8個位元組
&a+1是跳過整個陣列的地址,也就是加了16位元組
18樓:匿名使用者
a是相當於a[0][n]
a+1是a[1][n]
n是幾就差n*4個位元組嘍
a就是陣列首地址地址
c語言書上說a(i)和*(a+i)等價,我覺得不對啊
19樓:金色潛鳥
注意方括號和小括號。一維二維不要混淆。
c語言 語句中,方括號 不是標點符號,而是 運算子.
c語言 語句中,有恆等式: a[i] = *(a+i)a[i][j] 等於 (a[i])[j] 套恆等式公式,化成 ( *(a+i) )[j], 再化成 * (*(a+i) + j);
類似地 a[j][i] 等於 (a[j])[i],套恆等式公式,化成 ( *(a+j) )[i] ,再化成 * (*(a+j) + i);
求地址 用 & 運算:
1 維:& (a[i]) = & ( *(a+i) ); 注意 &* 抵消, 得 &a[i] = (a+i )
2維; &(a[i][j]) = (*(a+i) + j);
2維; &(a[j][i]) = (*(a+j) + i);
******************************=2 維:
a(i)等價於&a(i)(0) --- 不是小括號,是方括號,用於2 維 下標變數時的 a[i] 等價於 &a[i][0]a[i] 是第 i 行 的 首地址,等價於 &a[i][0]
20樓:運命に抗
書上是對的,你的理解完全錯了。
a[i]並不等價於&a[i][0]。
&a[0]等價於a;
&a[i]等價於a+i
同時取值
*(&a[i])等價於*(a+1);
其中*(&a[i])的*&抵消就是你書上說的 a[i]等價於*(a+1);
c語言中的二維陣列裡a+1和*(a+1)為什麼都是地址
21樓:劉文正粉絲
二維陣列, int a[10][20];
a是一個指標的指標, 即二級指標.
一個指標加一個數, 當然還是指標(即a+1是指標)
取值一個二級指標, 是一級指標(即指標), 所以還是指標, 不過型別發生了變化.
a+1的型別為int *[10].
而*(a+1)的型別則為int *, 也就是平常的指標.
如果你學習二維陣列是用心, 你就會知道不存在二維陣列, 二維陣列其實是一個包含陣列的陣列, 即陣列的每一個元素還是一個陣列(這點有點像物件導向的思維).
所以a[0]就是取第一個元素值, 而第一個元素是陣列, 所以其值仍是一個指標.
答了這麼多, 一看問題, 發現是"地址".....地址和指標是一個東西.
22樓:zh呼嘯而過
例如a[5][10];
a + 1的值是第二行的首地址,
* (a + 1)得值也是第二行的首地址,但是a + 1不等於a[1],而* (a + 1)等於a[1]。
如果給a+1再加1,就是a+1+1,就是a+2,它的值是第三行的首地址
如果給*(a+1)再加1,就是*(a+1)+1,它的值是第二行的第二個地址
他們移動的區別:前者是縱向的,後者是橫向的。
指標型別的區別:兩者均存放為同一地址,但前者是指向一維陣列,後者是指向元素的。
實際就是前者每次跳動4*10個位元組,後者每次跳動4個位元組。
23樓:twinkleh丶
a+1應該是 (a+0)+1
這裡的a是二維陣列中的二級指標
陣列名為a[0]的一維陣列(表示行)
也是陣列名為a的一維陣列(表示列)
後面的1表示行陣列移動1行
0表示列的移動
所以是1行0列的地址
*(a+1)中a是二級指標
取值二級指標是一級指標
一級指標指向的一維陣列(二維陣列中的行)
一維陣列移動一位只能是向下移動也就是行,
所以就是 第一行的首地址 也就等於二維陣列中 第一行零列的地址
24樓:tlier丿殘刀
二維陣列又包含多個一維陣列 a指向第一個一維陣列的首地址就還是地址
c語言中的二維陣列裡a+1和*(a+1)為什麼相等?
25樓:匿名使用者
它們只是值相等,但型別不相等,不能說它們相等。
a+1是int **型別,指向的是陣列a的第二行的起始地址; *(a+1)是int *型,指向的是陣列a的第二行第一個元素的地址。
為什麼.一個陣列元素a[i]與a+i的表示等價?謝謝啦
26樓:覺悟壯志
不等價吧
*(a+i)與a[i]等價
因為可以理解陣列是特殊的地址常量
a代表a[0]的地址
a+1就是地址+1
是a[1]……
27樓:儲熠祖波
a是儲存的是陣列首地址,*a指向的就是陣列第一個元素a[0],所以*(a+i)的地址和a[i]的地址一樣。陣列和指標在一定程度上本質是一樣的。
28樓:匿名使用者
a表示的陣列首地址,指標和陣列在一定程度上是一樣的。所以a[i]和*(a+i)指向的元素是一樣的。
a[i]表示給定了陣列首地址的儲存位置a 尋找陣列中的第i+1個元素(陣列第一個元素是a[0]),而*(a+i)就直接讓指標指向陣列第i+1個元素。
29樓:靜文風
因為a即代表a[0]是陣列的首地址,所以a[i]等價於a[0]+i,即a+i
C語言中a0b0等價於什麼啊
是表來達 相等 的關係運自算符,當兩個運算物件滿足相等關係時 計算結果為真 1 是表達 不等 的關係運算子,當兩個運算物件滿足不等關係時 計算結果為真 0 是邏輯與運算子,當兩個運算物件的同時為真時,計算結果為真。在一個表示式中,關係運算的運算優先順序高於邏輯運算。表示式 a 0 b 0 等價於 a...
c語言中ab2等價於aab2還是aab
朋友,其實這種問題自己編個小程式就知道了,a b 2等價於a a b 2 可以通過下面的小程式看出來 include void main 學習的過程中需要自己不斷的摸索。所以我希望以後您能再自己遇到困難的時候動手試試,很有利於你的學習進步。望採納 a a b 2 a a b 2 等號右邊是一個整體 ...
C語言中1f是什麼意思,c語言中 1f是什麼意思
c語言裡面的數字格式,f指float,佔用位元組數4,有效數字6 7,數值範圍 3.4 10 38 3.4 10 38 這個意思是用float的格式表示數字 c語言中 1f意思是 輸出資料是浮點數,佔一位空間,這樣輸出是沒有意義的,嚴重壞疑你寫鍺了,可能是 c語言中 4.1f是什麼意思,當然數字4可...