c語言中變數的地址是什麼型別的,C語言中變數的地址是什麼型別的

時間 2021-08-11 17:47:17

1樓:風若遠去何人留

變數的地址,在c語言中,一般寫作指標型別。

不同型別的變數地址,用不同的指標進行儲存。

比如,char 型別的地址,使用char*儲存,而int型地址,用int *儲存。

除此外,部分情況下也會採用整型型別來儲存變數地址,具體使用何種整型型別,取決於編譯器:

1 16位編譯器,地址佔16位,2位元組,可以使用short或者int儲存。

2 32位編譯器,地址佔32位,4位元組,可以使用int或long儲存。

3 64位編譯器,地址佔64位,8位元組,可以使用long儲存。

不過不推薦使用整型型別儲存地址,會帶來移植上的不通用。

2樓:千鋒教育

變數的地址是根據資料型別決定的。

比如:int是4個位元組的地址空間,每種資料型別佔用的位元組數是不同的。

它是物件地址空間的首地址,表示這個指標引用的物件在記憶體中的起始位置;另一元是物件的型別,它是物件地址的關聯的資料型別,表示這個指標引用的物件在記憶體中佔用的地址空間的大小。地址在計算機中由一個數字表示,在32位系統中是4個位元組的整數,64位系統中是8個位元組的整數。物件的指標在表示式中做為左值時引用的是物件本身,作為右值時引用的是物件的值。

如何理解 一個變數的地址 中的「地址」?地址形式是什麼樣的

3樓:小林子

記憶體地址這個概念

打個比方:整個記憶體就相當於一個擁有很多房間的大樓,每個房間都有房間號,比如從 101、102、103 一直到 nnn,我們可以說這些房間號就是房間的地址。相對應的記憶體中的每個單元也都有自己的編號,比如從0x00、0x01、0x02 一直到 0xnn,我們同樣可以說這些編號就是記憶體單元的地址。

房間裡可以住人,對應的記憶體單元裡就可以「住進」變數了:假如一位名字叫 a 的人住在 101 房間,我們可以說 a 的住址就是 101,或者 101 就是 a 的住址;對應的,假如一個名為 x 的變數住在編號為 0x00 的這個記憶體單元中,那麼我們可以說變數 x 的記憶體地址就是 0x00,或者 0x00就是變數 x 的地址。

基本的記憶體單元是位元組,英文單詞為 byte,我們所使用的 stc89c52 微控制器共有 512 位元組的 ram,就是我們所謂的記憶體,但它分為內部 256 位元組和外部 256 位元組,我們僅以內部的 256 位元組為例,很明顯其地址的編號從 0 開始就是 0x00~0xff。我們用 c 語言定義的各種變數就存在 0x00~0xff 的地址範圍內,而不同型別的變數會佔用不同數量的記憶體單元,即位元組,可以結合前面講過的 c 語言變數型別深入理解

4樓:幻の上帝

c語言本身沒有「地址」的概念。地址是語言實現中涉及到的內容。如果學過計算機組成原理或者組合語言就會知道儲存器中構造出一個連續的整數集合作為地址空間(通常不是實體地址空間, 生命行者2010 錯誤),而地址是其中的一個整數。

一個地址標識一個儲存器單元(可以儲存一個位元組),通過不同的地址就可以訪問不同的儲存器單元。

c語言中,變數是儲存數值的一種物件。c語言的編譯器把變數繫結到地址空間中,只要知道變數的(首)地址就可以標識這個變數。變數的物件語義要求變數的值能在程式執行期在儲存器中的確定位置能夠被找到,因此一個變數在確定的生存期中具有且只有一個地址。

而變數的值在實現上則是指儲存這個變數的一個或多個具有連續地址的儲存器單元中儲存的值(至於那個儲存器單元儲存哪個部分,涉及到位元組序問題,和語言本身無關,初學者無需關心)。(seven_qj錯誤,c語言的變數可以儲存在cpu的暫存器(和實體記憶體、虛擬記憶體被對映在同一個地址空間)中(定義暫存器變數時通過register儲存類限定符修飾),而不一定是記憶體中。)

ps1.在32位平臺上,地址空間的大小是2^32位元組,可以用一個32位整數表示。

2.c語言中的指標(變數)就是提供了指標運算規則、型別檢查的一種特殊的整數變數。

3.c語言中單目運算子&作用於一個物件時,返回指向這個物件的指標。

4.舉例:

int a = 1;/*定義了一個變數a。*/

int *ptr=&a;/*定義了一個指向int變數的指標ptr,它的值被初始化為表示式&a的值,也就是a的地址*/

/*如果ptr的值是0x12345678,那麼就表示a的地址是0x12345678。通過p可以間接訪問a所在的儲存器單元,從而對a進行間接操作。*/

/*話說0xffffffff也太扯淡了點- -...*/

5樓:匿名使用者

變數的地址就是變數的編號,和每個大樓的房間號一樣,房間號是地址,裡面存放的是內容,也就是變數的值了,不知道這麼解釋你能理解不?建議你看下彙編,再學c的地址就簡單了

6樓:

地址就是變數在記憶體中存放的位置。例如32位機上記憶體形式可以為:0xffffffff。

例如:int a=1;

int *ptr=&a;

假設變數a的地址為0xffffffff,那麼p的值就是ffffffff。

7樓:生命行者

變數指的是資料

地址指的是此資料的物理位置

例:變數a的地址是「某柱面某扇區某磁軌」

c語言中的指標是個什麼型別的變數?

8樓:匿名使用者

1.指標的型別 就是 指標

指標大小和記憶體的編址方式有關,只是恰好與無符號整形大小相同他的大小是 4位元組(32位) 就是類似 0012ff78(16進位制 32位)

注:如果你的電腦是64位電腦 那麼他的大小就是8位元組!

2.指標是用來儲存 記憶體地址的

記憶體有 按32位編制 和按64位編制之分

3.為什麼要給指標定義型別呢?

只有為指標定義型別

才能知道指標所指向的變數的大小

例如 int *p;

和 double *q;

那麼 讀取 *p時 就要從地址p開始 讀取4位元組讀取 *q時 就要從地址q開始 讀取8位元組希望你對你有所幫助

9樓:匿名使用者

佔用的空間和計算機的字長相同.

10樓:

..他不是什麼型別 他只是一個變數但是他的值是別的變數的地址佔幾個位元組安實現而論 (一般為4位元組)

例如 char c;

char *p=&c;

那麼p就是1位元組

11樓:匿名使用者

指標就是指標型別唄,裡面存放的是地址,在32位系統中,這個地址肯定是個32位的整數

12樓:匿名使用者

c指標是一個地無符號長整型。

佔四個位元組。

輸出時格式控制 "%ld"

13樓:匿名使用者

是無符號整型數,佔的位元組數根據編譯器和機器的位數不同而不同。

目前大部分是4個位元組。

14樓:匿名使用者

指標是c語言中廣泛使用的一種變數型別,不能說是資料型別。

指標的長度是依賴於它指向的資料型別。(一般式四個位元組)比如,int *n;在一般系統上二位元組。而int far *n;為四位元組。

(型別識別符號後面和*號前面可加上關鍵字far或near,來說明遠指標或近指標。例 int far *n;此例定義了遠指標n,都是指向整型變數的)

15樓:雷哥

指標變數本身是整形

因為在計算機中地址是用十六進位制整數標識

在記憶體中佔4個位元組

16樓:土豆_地瓜

機器地址空間是多少就是多少,現在一般用的是32位,所以是4個位元組,如果是64位的,就是8個位元組

17樓:方業

指標存放的是其它型別變數的地址,在記憶體中一律佔4個位元組!

18樓:匿名使用者

好像是記憶體中的一個地址?? 好像是佔4個位元組

19樓:匿名使用者

usigned char 四個位元組

c語言中變數的平方怎麼輸入,C語言中變數的平方怎麼輸入

天雲一號 在c 中,變數a的平方可以有2種方式進行輸入 1 直接本身相乘a a 2 用函式pow進行求變數a的平方,即pow a,2 注 函式pow的用法如下 函式格式 double pow double x,double y 功 能 計算x的y次冪 返 回 值 計算結果 當使用pow函式時,需要將...

c語言中定義變數的資料型別比如intchar有

1.首先你要多看看記憶體管理方面的內容。記憶體是由系統管理的,int和char,如果是常量那麼他們會被分配到常量區,如果是靜態變數,會被分到靜態變數區,區域性變數,又不一樣。不同的定義,記憶體地址肯定是不同的,這個系統自己管理。2.沒影響。但對執行時所佔空間就就有影響。源程式檔案大小隻是 量的大小 ...

c語言中變數名有什麼要求,C語言中變數名有什麼要求

c語言中變數名可由三類字元 字母 下劃線 數字組成。變數名只能由字母或下劃線開頭。變數名不能具有二義性。變數名有長度要求,有效長度是31個字元。在起定的名字中 超出長度規定的部分將被截掉。變數名中的字母不限大小寫,但大小寫意義不同。 你好,變數名必須是字母,數字和下劃線的組合,且首字母必須為字母,且...