1樓:如此甚好
這要看a是什麼了,如果a是指標變數,那麼a代表這個指標變數,*a代表這個指標變數所指向的目標。如果不是指標那麼*a不是正確的寫法。
c語言中a++與++a的區別是什麼?詳細一點,謝謝!
2樓:匿名使用者
a++ 是先返回a的值,再執行++運算。
++a 是先執行++運算,在返回a的值。
例如:#include
int main()
3樓:睢辰丁逸秀
a=7a++
先使用a的值,a在自增
++a先自增在使用a的值
b=a++
;//b=7
c=++a;//c=8
4樓:疲憊的龜
a++代表先取值,後運算。
++a代表先運算,後取值。
a=1;
如b = a++;
得b = 1
若b = ++a;
得b = 2
5樓:匿名使用者
一個用了再加1,一個先加一再用
c語言中,a==b與b==a有什麼區別麼?
6樓:匿名使用者
沒區別,==是恆等於,不存在賦值問題,單純比較,怎麼寫都行,但是=號就不一樣了,是右邊賦值給左邊
7樓:育知同創教育
寫法幾乎沒有什麼區別。前後順序不影響的。
8樓:匿名使用者
雙等號 是比較運算子, 沒有什麼區別
9樓:幻世封神
沒什麼區別,看個人習慣了
請採納吧
10樓:研凌工控電腦
無區別,這和只有一個=號不同
c語言中*a++和(*a)++有什麼不同?
11樓:茆德悟旻
也不算很難理解啊
說的通俗點
a++就是先把a當前的值
進行輸出或運算啥的
然後a在自增1
就是加1
++a也就先把a當前的值自增1
然後在輸出或運算啥的
好比a的值是1
b=++a
先把a當前的值1
自增1然後運算就是賦值給b
所以b=2
a=2b=a++
先把a當前的值1運算
就是賦值給b
所以b=1
然後a在自增1所以a=2
++--是1元運算副
具有右綜合性
優先順序高過
邏輯算術
賦值關係等這些運算副
12樓:度浩麗局妙
1,表示式的
值不同,++a的值是原a的值加1,a++是原a值例1int
a=1,
b;b=++a;
printf("%d",b);
例2int
a=1,
b;b=a++;
printf("%d",b);
2,++a可以做左值,a++不可以
例1int
a=1,
b=5;
++a=b;
printf("%d",a);
例2int
a=1,
b=5;
a++=b;/*這裡是個編譯錯誤*/
printf("%d",a);
13樓:閩恨甲瑾
hahugo88的回答很正確,這個意義必須掌握好哦!
我就是因為這個概念模糊考試丟了10分
14樓:匿名使用者
*** = *a++等價於 *** =*a;a++;指標移了一位*** = (*a)++等價於*** =*a;(*a)= (*a)+1;指標沒有移位,內容加1了。
15樓:澤男君
作為單獨的語句,a++;與++a;並沒什麼區別
但是b = a++;和b = ++a就有區別了
a++這個式子的返
回值是a,所以b = a++相當於b = a,然後a = a+1;
++a的返回值是a+1;所以b = ++a相當於a = a+1;然後b = a;
c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。
二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。
16樓:夜神月
優先順序 () > ++ > *
*a++ 先執行++ 再執行 * 即指標先移動一個位置,在對移動後指標所指位置解引用取值。
(*a)++ 先執行*a 再執行++ 即先對指標所指位置解引用取值,再對這個值自增加1.
17樓:滄海雄風
*a++ 和(*a)++
區別 一個是 指標後移 一個是指標指向的內容自加舉例int *a, b[2]=,c;
a = b;
c=*a++ 那麼 a 指向1 則c等於2c=(*a)++ 那麼 c 等於2
過程不一樣而已
舉例子 一個是別人讓你移動一格
一個是你自己移動一格
18樓:
優先順序的關係自增的級別要高
c語言中*p=a與*p=&a有什麼區別
19樓:清鵬之
讓我來綜合一下吧
在定義的時候
int *p=&a; 是等同於 int=*p; p=&a;的。該形式只在定義的時候是正確的。就是指標p所指向地址的內容為a的內容。
如果不是定義的時候
*p=&a; 就是它字元的那個意思,就是指標p所指向地址的內容為a的地址。
dev c++試了下
————————————————————————————————————
「*p」表示地址為p儲存單元的內容;「p」表示地址;「&a」表示取a的地址;a為變數。
int *p;//初始化指標,但是該指標無指向地址!如果直接使用會有問題。
int *p=&a;//初始化指標,該形式只在定義時正確,表示以p指標所指向地址的值為變數a的值。
p=&a;//表示指標p所指向的地址就是a的地址。即地址間的賦值。
*p=a;//表示指標p所指向地址的內容就是內容a。
在c中,指標一定要初始化,指標加1指的是增加一個儲存單元。對陣列而言,這意味著把加1後的地址是下一個元素的地址,而不是下一個位元組的地址,這是為什麼必須宣告指標所指向物件型別的原因之一。
20樓:匿名使用者
首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。
我不討論它們的區別,因為*p=&a這個形式一般是錯的,常用的是p=&a。
下面比較*p=a和p=&a。看圖,圖很詳細。
顯然它們是等價的。
然後比較*p=&a和p=&a;
則這兩種都是對指標變數的賦值,賦值有兩種形式
①先定義後賦值
int a=3,*p;(定義指標變數*p)
p=&a;(對指標變數取地址)
②定義變數的同時賦值
int a=3,*p=&a
也就是說在賦值時,
int *p=&a
相當於int *p,
p=&a
它們的區別其實就是
int *p=&a是同時定義*p並對賦值p(即a的地址賦給p),而p=&a,只是對p賦值,沒有定義指標變數。
但要注意,只有在同時定義賦值時「*p=&a」這種寫法才是對的
其他情況下不要用*p=&a,這種形式,因為根本就不對,如下圖。我之前一直的疑問是為什麼賦值時*p=&a就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。
21樓:沉睡的羅羅塔
*p=&a;是將a的地址賦值給*p,結果會是一個十六進位制的數。 第二個是讓p指向a的地址空間。*p的傎和a相等。
int a=2,*p; *p=&a; 列印*p應該是一個地址值,很長一串, p=&a; 打*p印結果會是2;
對於指標來說,
*p = a[0],表示向地址為p的記憶體區域賦值為a[0]。
p = a[0],把變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體地址,這樣賦值會丟掉p原來指向的記憶體。
22樓:幻想祕境
*p=a是將a的值給p指標指向的地址的值
*p=&a是將a的地址給p指標指向的地址的值
c語言中與的區別,c語言中「 」與「 」有什麼區別?
c語言中 與 的區別如下 是否為單行註釋 是用於多種語言的單行註釋語句。是註釋語句,不限制行數,在 和 之間的即為註釋。實用性的區別 是用於多種語言的單行註釋語句,適用方便快捷,但是實用性不如多行註釋 是註釋語句,不限制行數,在 和 之間的即為註釋,實用性大,但是符號鍵盤敲打麻煩。程式編譯時,不對註...
c語言中p與P有什麼區別,c語言中p5與P5有什麼區別?
舉例說明,include int main int a 5 b int m a a範圍內的空間按照 int大小來取值 for i 0 i 5 i return 0 輸出結果為 1 2 3 4 5 其中 int a 5 表示在棧中產生一個大小為 5個int的空間 a代表的的是整個空間的首地址 int ...
C語言中pa與pa有什麼區別
p a 0 令p所指向地址的內容等於a 0 p是一個一級指標 p a 0 令p所指向地址的內容等於a 0 的地址,p是一個二級指標。c語言中 p a 0 與p a 0 有什麼區別?對於指標來說,p a 0 表示向地址為p的記憶體區域賦值為a 0 p a 0 把變數p的值改為a 0 這個語句正常應用中...