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

c語言中地址符有什麼用

發布時間: 2022-04-03 08:00:04

『壹』 c語言取地址符有什麼用,為什麼scanf一定要用& 求大神解釋,真心不會。

地址這東西是有點抽象,尤其是後面學了指針更是繞來繞去,題主有興趣了解可以讀一讀這篇文章

關於C語言取地址運算符」&「

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

*就是取指針所指地址處保存的數值,
&就是去一個變數的地址。

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

區別如下:

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

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

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

指針中的「取地址符」

(3)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語言裡面,字元數組結束的標志是遇到'\0'。
在你的程序里,顯然沒有結束符,所以編譯器不知道字元數組在何時結束。
另外要說明的是,結束符'\0'也要戰用一個字元。用字元串給數組賦值編譯器會自動在末尾加上結束符。所以你的第一個程序其實也是錯誤的,char a[5] = "abcde" 會提示溢出。改為char a[5] = 「abcd"才對。或者char a[] = "abcde",實際上a的長度是6

『伍』 C語言中地址符究竟是什麼

地址符& 就是獲得一個變數/常量/函數的內存地址,沒有別的含義。

scanf中,使用地址符,是因為scanf需要的是指針變數(因此指針變數不需要地址符),而普通變數需要通過地址符轉譯為指針使用。

charc,*p;
c='a';
p=&c;//這是地址符的「真諦」
scanf("%c",&c);
scanf("%c",p);

注意兩個scanf語句都是正確的。

『陸』 C語言中對地址的操作有什麼作用

地址操作,也即指針的使用,指針是c一大特點,c是介於高級語言(C++等)與低級語言(匯編)的一種語言,c比其他高級語言更接近底層硬體,而接觸到硬體就避免不了地址操作,靈活的指針使用可以編出高效的程序。

具體的好處,看下網上搜的:

關於指針的本質和基本的運算符我們討論過了,在這里,我想再籠總地談一談使用指針的必要性和好處,為我們今後的使用和對後面篇章的理解做好鋪墊。簡而言之,指針有以下好處:
1)、方便使用動態分配的數組。
這個解釋我放在本系列第六篇中進行講解。
2)、對於相同類型(甚至是相似類型)的多個變數進行通用訪問
就是用一個指針變數不斷在多個變數之間指來指去,從而使得非常應用起來非常靈活,不過,這招也比較危險,需要小心使用:因為出現錯誤的指針是編程中非常忌諱的事情。
3)、變相改變一個函數的值傳遞特性。
說白了,就是指針的傳地址作用,將一個變數的地址作為參數傳給函數,這樣函數就可以修改那個變數了。
4)、節省函數調用代價。
我們可以將參數,尤其是大個的參數(例如結構,對象等),將他們地址作為參數傳給函數,這樣可以省去編譯器為它們製作副本所帶來的空間和時間上的開銷。
5)、動態擴展數據結構。
因為指針可以動態地使用malloc/new生成堆上的內存,所以在需要動態擴展數據結構的時候,非常有用;比如對於樹、鏈表、Hash表等,這幾乎是必不可少的特性。
6)、與目前計算機的內存模型相對應,可按照內存地址進行直接存取,這使得C非常適合於一些較底層的應用。
這也是C/C++指針一個強大的優點,我會在後面講述C語言的底層操作時,較詳細地介紹這個優點的應用。

『柒』 c語言中地址代表什麼意思有哪些作用

在計算機中,所有的數據都是存放在存儲器中的。一般把存儲器中的一個位元組稱為一個內存單元,不同的數據類型所佔用的內存單元數不等,如整型量佔2個單元,字元量佔1個單元等,在前面已有詳細的介紹。為了正確地訪問這些內存單元,必須為每個內存單元編上號。根據一個內存單元的編號即可准確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關系。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。在這里,帳號就是存單的指針, 存款數是存單的內容。對於一個內存單元來說,單元的地址即為指針,其中存放的數據才是該單元的內容。在C語言中,允許用一個變數來存放指針,這種變數稱為指針變數。因此,一個指針變數的值就是某個內存單元的地址或稱為某內存單元的指針。

圖中,設有字元變數C,其內容為「K」(ASCII碼為十進制數 75),C佔用了011A號單元(地址用十六進數表示)。設有指針變數P,內容為011A,這種情況我們稱為P指向變數C,或說P是指向變數C的指針。
嚴格地說,一個指針是一個地址,是一個常量。而一個指針變數卻可以被賦予不同的指針值,是變數。但常把指針變數簡稱為指針。為了避免混淆,我們中約定:「指針」是指地址,是常量,「指針變數」是指取值為地址的變數。定義指針的目的是為了通過指針去訪問內存單元。
既然指針變數的值是一個地址,那麼這個地址不僅可以是變數的地址,也可以是其它數據結構的地址。在一個指針變數中存放一個數組或一個函數的首地址有何意義呢? 因為數組或函數都是連續存放的。通過訪問指針變數取得了數組或函數的首地址,也就找到了該數組或函數。這樣一來,凡是出現數組,函數的地方都可以用一個指針變數來表示,只要該指針變數中賦予數組或函數的首地址即可。這樣做,將會使程序的概念十分清楚,程序本身也精練,高效。在C語言中,一種數據類型或數據結構往往都佔有一組連續的內存單元。 用「地址」這個概念並不能很好地描述一種數據類型或數據結構,而「指針」雖然實際上也是一個地址,但它卻是一個數據結構的首地址,它是「指向」一個數據結構的,因而概念更為清楚,表示更為明確。 這也是引入「指針」概念的一個重要原因。

『捌』 地址符&詳解!C語言中的!

舉個例子你應該就可以明白了
二進制11001001&00111001=00001001
比較位的兩位同時為一則結果為一
1&
1=
1
1&
0=
0
0&
1=
0
0&
0=
0

『玖』 c語言 scanf();為什麼要用取地址符

scanf(「格式控制字元串」, 地址表列);
其中,格式控制字元串的作用與printf函數相同,但不能顯示非格式字元串,也就是不能顯示提示字元串。地址表列中給出各變數的地址。地址是由地址運算符「&」後跟變數名組成的。

例如:&a、&b分別表示變數a和變數b的地址。

這個地址就是編譯系統在內存中給a、b變數分配的地址。在C語言中,使用了地址這個概念,這是與其它語言不同的。 應該把變數的值和變數的地址這兩個不同的概念區別開來。變數的地址是C編譯系統分配的,用戶不必關心具體的地址是多少。

變數的地址和變數值的關系
在賦值表達式中給變數賦值,如:
a=567;
則,a為變數名,567是變數的值,&a是變數a的地址。

但在賦值號左邊是變數名,不能寫地址,而scanf函數在本質上也是給變數賦值,但要求寫變數的地址,如&a。這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達式,其功能是求變數的地址。

『拾』 C語言地址運算符&的作用

這里的&是引用,是C++的內容,並不是C語言中的取地址