當前位置:首頁 » 編程語言 » 在c語言中取地址運算符是
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

在c語言中取地址運算符是

發布時間: 2023-03-08 03:57:16

『壹』 c語言中取地址的符號都有哪些

&也有一些本身就是地址的,比如數組名那些
*p那是指針~~!
不同的,那個不是取地址,是取那地址裡面的內容。

『貳』 c語言中取地址符和*有什麼區別

區別如下:

(1)兩者根本意義不同。*是指針的意思,而&是去地址的意思,這兩個相輔相成。

(2)用法不同。高級的c語言都是動態開辟內存,是使用malloc和free,這時就不用&了,因為取引用都是對於棧上的數據,在數據結構中,都是在堆上開辟數據容量。

(3)語言規則不同,變數類型加*就是一個指向該變數類型的指針,通俗點說,指針就是可以通過地址修改和獲取該變數的值,而&符號只是獲取該變數的地址!

指針中的「取地址符」

(2)在c語言中取地址運算符是擴展閱讀:

引用的聲明符放置在變數名的前面,和*操作符的用法一樣。

引用聲明完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。ra=1; 等價於 a=1;

聲明一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種數據類型,因此引用本身不佔存儲單元,系統也不給引用分配存儲單元。

故:對引用求地址,就是對目標變數求地址。&ra與&a相等。

#include<iostream>using namespace std;int main()

{ int m[10]={1,2,3,4,5,6,7,8,9,10}; int (&n)[10]=m; for(int i=0;i<10;i++) cout<<m[i]<<' ' ;

cout<<endl; for( i=0;i<10;i++) cout<<n[i]<<' ' ; cout<<endl; return 0;}

例如:

int*pointer;//建立一個指針

int*&p1=pointer;/*

正確,編譯系統把"int*"看成一體,把"&p1"看成一體,即建立指針pointer的引用,就是給指針pointer起別名p1。

int&*p2=pointer;//錯誤,這就變成了引用的指針。

『叄』 &在c語言里的是什麼意思,有什麼作用

&在c語言裡面表示「取地址」的意思,使地址運算符,如你定義了int
a;
那麼&a的意思就是變數a的地址值,如果你定義了一個指針變數,如指向一個整型數據的指針變數int
*
p;另外定義了一個整型變數int
b;那麼你就可以進行這樣的運算
p=&a;就是把a的地址值賦給p,令&&表示的是邏輯運算符「與」的意思

『肆』 &在c語言中是什麼意思

&在C語言中可能表示兩種運算符。

1、如果運算對象只有一個,且為右操作數,那麼&為取地址運算符,結果為操作對象的地址。例如&a(假設a是一個左值,即具有具體的可訪問的地址)結果為a的地址。

2、如果運算對象有兩個,那麼&表示位與運算。結果中的每一個二進制位等於兩個運算數的對應位置的二進制位按位與。每一個位的位與運演算法則是,當且僅當運算數都為1時結果為1,即:1 & 1 == 1,1 & 0 == 0 & 1 == 0 & 0 == 0。

c語言運算符號種類:

1、算術運算符

用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。

2、關系運算符

用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。

3、邏輯運算符

用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

4、位操作運算符

參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

5、賦值運算符

用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

6、條件運算符

這是一個三目運算符,用於條件求值(?:)。

7、逗號運算符

用於把若干表達式組合成一個表達式(,)。

8、指針運算符

用於取內容(*)和取地址(&)二種運算。

9、求位元組數運算符

用於計算數據類型所佔的位元組數(sizeof)。

10、特殊運算符

有括弧(),下標[],成員(→,.)等幾種。

以上內容參考 網路-c語言運算符號

『伍』 C語言中 取內容與取地址運算符的問題

我明白你什麼意思,指針的概念確實不好理解!
1,先給你說下指針,你把指針理解了運算符的抵消就明白一半了!
指針裡面是保存的內存地址(就像int變數裡面保存的是整型變數一個意思)。
整型變數保存在內存裡面,我可以通過這個變數名稱來調用這個數據,也可以通過指針裡面這個變數的地址加上*(間接訪問運算符),來調用這個數據。
2,再說下運算符*和&
*是間接訪問運算符:就是可以通過地址,找到這個地址裡面的變數,所以
*p1
就等同於變數a
&是求地址運算符:就是將變數所在的內存地址,提取出來
這兩個運算符的運算等級是相同的,也就是說誰距離變數近,就誰先。所以*&a和*(&a)是一樣的,都是先取地址,在對地址進行間接訪問。但是一定要注意*與&的順序,&*a是無效的。
3,再說下題
*運算符就是對地址進行操作的,那麼
*地址
的意思就是訪問地址裡面的數據,而&a就是取變數a的地址,所以*&a:
先取變數a的地址

對地址進行間接訪問,兩個操作就相互抵消了,最後還是變數a。
4,還有什麼不明白的么?

『陸』 初學C語言,*是取指針目標運算符,&是取地址運算符,它們有什麼區別 通俗一點 謝謝

&是取地址運算 對任意變數都可以進行取地址操作如:int i , *pi ;pi=&i ;int **ppi ;ppi=&pi ;*是取指針目標運算符 其後跟隨的必須是指針類變數如:int i,*pi ;pi=&i ;*pi = 10 ; //相當於 i=10 ;*i=10; 這樣寫就是錯的,i不是指針類變數,所以 *i操作就是錯誤的語句。初學C語言,*是取指針目標運算符,&是取地址運算符,它們有什麼區別? 通俗一點 謝謝