c語(yǔ)言中& *的用法 c語(yǔ)言中& *的用法
區(qū)別:
1.運(yùn)算符性質(zhì)不同。
&是一個(gè)位運(yùn)算符。
&&是一個(gè)邏輯運(yùn)算符。
2.作用不同。
&是將兩個(gè)二進(jìn)制的數(shù)逐位相與,結(jié)果是相與之后的結(jié)果。
&&就是判斷兩個(gè)表達(dá)式的真假性,只有兩個(gè)表達(dá)式同時(shí)為真才為真,有一個(gè)為假則為假,具有短路性質(zhì)。
3.用途限制。
&除了是一個(gè)位運(yùn)算符,也是取地址符。
&&就是一個(gè)單純的邏輯運(yùn)算符,沒(méi)有任何其他含義。
參考資料
&-百度百科
&&-百度百科
通常“&”被叫做引用或者符取地址,“*”叫做解引用符,他們倆是相反的過(guò)程
int i=1;
int * adr_i = &i; //將i的地址賦予int *型變量adr_i
//這里的adr_i的內(nèi)容是一個(gè)內(nèi)存地址,如0X0000DE56
printf("%d",*adr_i); //打印地址adr_i(0X0000DE56)所存儲(chǔ)的變量?jī)?nèi)容
&是直接取變量的地址,而*這個(gè)運(yùn)算符之用在指針變量前,它得到的是指針變量所指向的值。
打個(gè)比方說(shuō)你要找人,用&它告訴你的是那個(gè)人的地址,而*就直接帶你找到那個(gè)人(前提是知道地址,也就是*這個(gè)運(yùn)算符之用在指針變量前)
看個(gè)例子吧
int main()
{
int a[10]={0};
int **p,*q,t;
p=a;q=&a[0];
printf("%d %d",*p,q);
}
&可以取變量的地址
*按地址取值
int a=3,*b;
b=&a; /*a的地址給b*/
printf("%d",*b); /*顯示3,因?yàn)閎里面是a的地址,按地址b取值,得3*/
簡(jiǎn)單明了的給你解釋
&是取地址,也就是取內(nèi)存的地址編碼,但當(dāng)前面有類型時(shí)表示引用:
int a;
int *P=NULL;
p=&a; //取地址
int &b=a; //引用
*表示取地址里面所存的內(nèi)容,但前面有類型時(shí)說(shuō)明是定義地址:
int a;
int *p=&a; or
int *p=0x12345678; //實(shí)際應(yīng)用時(shí)是不允許自己指定物理地址的
相關(guān)評(píng)說(shuō):
宏偉區(qū)背錐: ______ 比如int a,*b; b是指向整型變量的指針(及b里面保存的是a的地址) 僅輸出b時(shí)是輸出內(nèi)存的地址 b=&a; a取地址符&就變成了a所在內(nèi)存的地址 而b正好是指向地址的指針 所以把a(bǔ)的地址賦值給b *b 表示的是b里面地址所指向的內(nèi)容b=&a b保存的地址是a的 那么指向的內(nèi)容就是a的值 所以輸出*b就等同于輸出a
宏偉區(qū)背錐: ______ & 在這里是 運(yùn)算符,用于計(jì)算 變量的 地址. 如果聲明了 int x; 那么, scanf("%d", &x); 就是從 鍵盤 輸入 一個(gè)整型 數(shù)值,存放到變量名叫 x 的 它的地址里去. 如果 寫(xiě)成 scanf("%d", x); 編譯時(shí) 也許不報(bào)錯(cuò),但在 執(zhí)行 輸入 操作 時(shí),會(huì)出現(xiàn)錯(cuò)誤,程序中斷,無(wú)法繼續(xù).
宏偉區(qū)背錐: ______ 當(dāng)在變量前時(shí),如&a,表示取地址, 做運(yùn)算符時(shí),如a&b,表示二進(jìn)制與運(yùn)算, 做邏輯運(yùn)算時(shí)(要兩個(gè)連用,即&&),如表達(dá)式1&&表達(dá)式2,表示邏輯與運(yùn)算
宏偉區(qū)背錐: ______ *是指針運(yùn)算,&是取地址.*后面必須是指針變量,&后面則什么變量都可以(除了常數(shù)). c語(yǔ)言 C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛.C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需...
宏偉區(qū)背錐: ______ &代表取地址,比如聲明了int a = 5;那么系統(tǒng)自動(dòng)給a開(kāi)一塊內(nèi)存區(qū)域,這片區(qū)域內(nèi)存放數(shù)值5.具體使用是這樣的: printf("%d", a);輸出a的值 printf("%d", &a);輸出a的地址 在scanf中使用&的原因是系統(tǒng)必須知道你要把值寫(xiě)入哪個(gè)地址,所以要取變量的地址. printf("%5.2f", a);的意思是讓輸出的數(shù)值在屏幕上占5位,小數(shù)點(diǎn)后保留2位 例如 printf("%.2f", a);意思就是小數(shù)點(diǎn)后保留2位輸出 printf("%5f", a);意思就是讓輸出的數(shù)值在屏幕上占5位,不理解的話樓長(zhǎng)試試就知道了
宏偉區(qū)背錐: ______ *的意義較多,只有放在指針前面時(shí)才是取指針指向的目標(biāo)變量的值.&也有兩個(gè)作用,只有放在變量前面且左值變量是匹配的指針時(shí)才是取變量地址的意思.如: int *p,x=3,y;——要注意,這里p前的*不是p的而是int的,是聲明了一個(gè)int *型指針p. 若再寫(xiě)p=&x;,這就是把x的地址賦給p;若再寫(xiě)y=*p;,那就是把p指向的x的值3賦給變量y.
宏偉區(qū)背錐: ______ &和|是位運(yùn)算.&&和||表示邏輯關(guān)系,&&和||表達(dá)式最終的值只可能是真(1)或者假(0),而位運(yùn)算表達(dá)式的值不限于0和1 兩者在特定情況下的效果是相同的.操作方法如下: 1、首先這里用到字符的ascii碼,A的ASCII碼為65,之后用scanf...
宏偉區(qū)背錐: ______ a&=b 等價(jià)于a=a&b a|=b 等價(jià)于a=a|b a^=b 等價(jià)于a=a^b 而 &、|、^ 分別是 位與、位或、位異或 三種位操作符.
宏偉區(qū)背錐: ______ &可以作為“按位與”或是“取地址”運(yùn)算符 下面是作為兩種用法的介紹: 1. 按位與運(yùn)算 按位與運(yùn)算符"&"是雙目運(yùn)算符.其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相與.只有對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1 ,否則為0.參與運(yùn)算的...
宏偉區(qū)背錐: ______ &: 在C語(yǔ)言中有兩種意思,一種是取地址符,是單目運(yùn)算符;另一種是位運(yùn)算符,表示“按位與”,是雙目運(yùn)算符.|: 是位運(yùn)算符,表示“按位或”. 資料擴(kuò)展 1、符號(hào) & 和 | 這兩個(gè)運(yùn)算符都是二進(jìn)制的按位操作符. &: 二進(jìn)制“與”(都...