首頁  >  文章  >  後端開發  >  C語言中&是什麼意思?

C語言中&是什麼意思?

Guanhui
Guanhui原創
2020-06-12 14:11:5645933瀏覽

C語言中&是什麼意思?

C語言中&是什麼意思?

C語言中&可以作為「位元與」或是「取位址」運算符,位元與運算子也是雙目運算符,其功能是參與運算的兩數各對應的二進位相與,而取位址運算符就是一元運算符,會將運算結果設定為右操作物件的位址。

位元與運算子

#是將二進位數依位元的對應與,得到一個新的二進位數。 1與0為zhi0;1與1為1;0與0為0。

分析如下:

就是二進位的每一位相與。

例如:1010 0011& 0000 1111,結果為0000 0011。也就是與上0相當於把那位數清0,與上1相當於把那位保留。



C語言中&是什麼意思?

#取位址運算子

對於c語言中的&運算符,定義:(&p)則是這樣一種運算,返回當時聲明p 時開闢的地址;但是根據我對代碼的觀察,我覺得&運算符不只是返回地址的功能;

例如:

int a = 1;
//假设a的地址是0x7dfe88
int *p = (int *)0x7dfe88;
int num = 1;
int *p1 = #

以上是一段簡單的給指標p,p1賦值的程式碼,0x7dfe88是一段單純的十六進位位址,但是當位址轉指標的時候卻必須加上強轉(int *);如果不加強轉,那麼編譯器就會提出警告( warning C4047: “初始化”:“int *”與“int”的間接級別不同);但是使用&運算符取地址的時候卻不需要加任何強轉就能編譯通過,說明&運算子絕不是的取得位址那麼簡單,「=」賦值運算子的運算順勳是從右向左,說明"="的右邊也是一個指針,所以在此假設&運算子會取出num的位址,並且根據num的型別產生一個暫時的指標。

根據假設,寫出如下程式碼驗證:

int num = 1;
double *p1 = #

結果編譯器報“ warning C4133: “初始化”: 從“int *”到“double *”的類型不相容”錯誤。所以我的假設有一定的道理。

推薦教學:《C#》

以上是C語言中&是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn