在c語言裡面,a 0和a 1分別表示什麼意思

2021-03-26 02:27:02 字數 4394 閱讀 5003

1樓:

&a[0]++;是錯誤語句,編譯都不會過。因為++是後++,在執行該語句時是不計算的,所以a[0]++是個表示式而不是值,顯然用&取一個表示式的地址是非法操作!而如果是&++a[0];則是正確的,因為前++在執行&時已經計算過了:

就是先給a[0]+1,然後再取a[0]的地址。

&a[0]+1;是正確語句,因為&的優先順序比+高,所以是先取a[0]的地址再給這個地址+一個元素所佔位元組數——就是說&a[0]+1是a[1]的地址。

2樓:匿名使用者

&a[0]++表示程式執行時會對執行結果自加1

&a[0]+1表示程式執行時對結果加上1,如果改為2就會加上2

3樓:一輩子朋中

他們的結果一樣,都是a[0]的地址加一

4樓:百度使用者

a[0]表示陣列a 的第一個元素,

&a[0]是取a[0]在記憶體中的地址

&a[0]++是將a[0]在記憶體中的地址向前移動一個單位.

理論上&a[0]+1和&a[0]++的執行效果是差不多的

5樓:匿名使用者

不一樣!

++的優先順序比&高,&比+高!

所以&a[0]++是進行a[0]=a[0]+1之後,在取a[0]的地址

而&a[0]+1是先取a[0]的地址,然後將指向這個地址的指標(假設int *p;p=&a[0];)移動一個資料長度,即指向了a[1];

&a[0]++

就是&a[0]+1就是

6樓:匿名使用者

這要看你要說的是

一維陣列還是二維陣列了,如果是一維,答案同atchoo,要補充的是,向前移動的是陣列資料型別所佔的記憶體空間,比如是int,就移動2個單元;如果是二維,

a[0]表示第一行首地址,&a[0]表示第一行第一列首地址,&a[0]++就是把第一行第一列的元素加1.

7樓:匿名使用者

有人說a = a + 1;比a++;慢,但現在的編譯器結果是一樣的.

8樓:信培勝戊衣

編譯錯誤如下,都是取得陣列a的第二個元素的地址&a[0]++與&(a[0]++)等價:6,無法編譯通過,不能取得地址;

表示a[0]++不是一個左值:

non-lvalue

inunary

`&'.cpp:

main。

而&a[0]+1與a+1和&a[1]是等價的

c語言a[0]++是什麼意思

9樓:小夏在深圳

a[0]++也就是陣列中第一個值+1再存放到原位。

比如:int a[2];

其中a[0]=1; a[1]=5;

a[0]++以後,a[0]的值變為2。

&a[0]++是錯誤語句,編譯都不會過。因為++是後++,在執行該語句時是不計算的。a[0]++是個表示式而不是值,顯然用&取一個表示式的地址是非法操作。

&a[0]+1是正確語句,因為&的優先順序比+高,所以是先取a[0]的地址再給這個地址+一個元素所佔位元組數——就是說&a[0]+1是a[1]的地址。

擴充套件資料源**如下:

#include "stdio.h"

main()

10樓:銀月惡魔_仙劍

可以自己試著編個程式,執行一下,如:

#include

void main()

;printf("%d\n",a[0]++);

return 0;

}程式執行到a[0]++的時候,a[0]=3;

等到所有語句執行完後,a[0]=4。

11樓:匿名使用者

#include

int main()

;printf("%d\n",a[0]++);

return 0;

}結果是3 雖然我感覺是4.。。。不過很可惜

12樓:匿名使用者

變成a[1]=3

一個變數 後加上++ 比如a++ 就是自己加1

13樓:匿名使用者

a[0]++是這次命令後值加1,應該是a[0]=4

14樓:磊無敵

我同意樓上說的,其實你把**執行一下不就知道了

c語言中,&a+1和&(a+1)的區別是什麼

15樓:匿名使用者

語句中,b = *a+1 -- 指標a 指向的數值加1,*a 是數值, b 等於 那個數值 加 1。

或 把a看成陣列元素 b = a[0] + 1;

*(a+1) -- 指標 (a+1) 指向的數值b = *(a+1) -- 可以看成陣列元素 b = a[1];

16樓:匿名使用者

a是指標?是的話,&(a+1)就是a指標指向的地方+1(型別)的位置;若是指向的是陣列的話,&a+1就是增加整一個陣列的地址了。比如int b[8],*a=b,&a+1就是增加4*8=32個位元組了。

17樓:聽不清啊

c語言中,

"a"佔2個位元組,一個'a'和一個'\0'(字串結束符),它是一個字串。

'a'就只佔一個位元組,即單個字元'a',它是一個字元。

18樓:匿名使用者

c語言為了使寫法更方便,單條語句更簡短,增加了縮寫形式。

這兩種方式是一樣的,沒有任何區別。

除此之外,還有a *= 1,a %= 1,只要是操作符都可以。

19樓:我是你0爸

呃,,,樓上的各位都沒有答到本質上 從本質上講,「a」是一個指標常量,而'a'則是一個數值。也就是說,在編譯器看來,「a」的值是一個地址(比如:0x84f39ea0),而'a'的值則是a的ascii碼(即97)。

樓主用printf列印這兩個值看看就知道了 另外,當「」裡的字串有多個字元時,它指向字串的第一個字元。

20樓:匿名使用者

&a+1是a的地址加上1,&(a+1)是(a+1)的地址

&是地址運算子和引用運算子

21樓:匿名使用者

注意,後者是非法的。

22樓:匿名使用者

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]

23樓:燕清揚

例如a=2;

a++;輸出結果為2;但是記憶體中它的值自加1了。(先輸出a再運算)例如a=2;

++a;輸出結果為3;記憶體中也是3.(先運算a再輸出值)。

例如a=2;

a+=1;意思等同於a=a+1;

24樓:匿名使用者

取a的地址加1

取a+1的地址

25樓:認不倒你

&a+1 :a的下一個位置的指標

&(a+1): 錯誤

26樓:

事實上是一樣的

a>>=1的意思就是a>>1並賦值給a;

可能執行的效率會有錯

27樓:曉呈呈

a++ 先取值再自加

++a 先自加再取值

a+=1 等同 a=a+1

28樓:匿名使用者

這裡的a=&a[0][0];

a+1=&a[1][0],也就是過了一個a[0][1],因此是加了8個位元組

&a+1是跳過整個陣列的地址,也就是加了16位元組

29樓:匿名使用者

a是相當於a[0][n]

a+1是a[1][n]

n是幾就差n*4個位元組嘍

a就是陣列首地址地址

c語言 *p=&a[0][0] 這是什麼意思啊? 如果後面還有*p+1;呢

30樓:匿名使用者

p是個指標,指向的地方被賦值為a[0][0]的地址,所以p應該是個二維指標例如

int * q;//相當於&a[0][0]int** p=&q ;

*p=q;

後面的*p+1值就是&a[0][1]

31樓:洛雨

就是把p指向a[0][0]的地址,*p+1,根據優先順序,其實是(*p)+1,相當於a[0][0]+1

在c語言中0和n都是什麼意思,在C語言中 0 和 n 都是什麼意思?

轉義字元。1 0其實就是0,字串存入字元陣列的時候最後一個字元作為字串的結尾回。告訴計算機,答 這個字串結束了。2 n是回車換行,挺長用的。比如 printf d n a 就會輸出a的值以後,自動換行。putchar n 輸出一個回車。其它的你可以瞭解一下 t,相當於一個很大的空格。根據你的補充提問...

在c語言中0x01和0x1相等嗎

include int main 這是測試程式 列印的結果i j是相等的 說明兩者相等 c語言中0x01 9,和0x01u 9得到的結果一樣嗎,是都為0嗎 在c語言中,可以用 bai作取du地址和按位與操作兩種運算zhi。不過取dao地址是針對變數的,內當前 後是一容個常量,在c語言中不允許取地址操...

在C語言中,執行mainint a 1,b 2,m 0,n 0,k k n bam a b printfd,d n ,k,m執行時警告

n b a m a b 由於這是或,也就是說只要 前面為真,後面就不會執行了。因此會有這樣的警告。與 邏輯或跟與 抄 有部完襲 全運算的,比如在左邊的表達bai式可以決定怎麼個du式子的值時zhi,右邊一個表示式講不在dao執行。例如 表示式1 表示式2 當表示式1等於1時,就不在計算表示式二,會警...