c語言中 變數儲存的是不是位址

2025-03-13 04:15:20 字數 3957 閱讀 4254

1樓:和倫門綢

變數儲存的是對應型別的值,是否為位址同樣取決於型別。

變數具有不同的型別。

整型變數int,儲存的就是乙個整數;float型別,儲存的是實數棚模;char型別,儲存的是字元(實際上也是整數)。

指標變銷賣量,是c語言的特殊變數,其儲存的是位址。在c語言中,只有指虧和逗針是用來儲存位址值的。

2樓:尋玉花杭書

是的,變數儲存位址,然後根據這個位址訪問記憶體!如果是int型別的變數,會根據位址自動獲取int大戚前小的亂猜記憶體資料,如果是char*型別的,會根據位址自高陪清動獲取記憶體資料,直到遇到'\0'才算獲取完,其它型別類似!

3樓:鄢蘭英夔寅

是的,目前絕大多數系統下,任何型別的衝滑槐指標都是佔用4個位元組(見過比較新的redhat還是ubantu的,指標是佔8個位元組的),而指標佔用空間存在的值就讓李是指標指向的變數的記憶體位址,而目前的記憶體位址都是4g的(我們列印看到的都是虛擬的記憶體位址,所以可能你的電腦的記憶體是8g的,但是用%x列印輸出絕對不散友會超過4g)。指標本來就是間接定址,是需要二次定址的,指標變數本身也只能儲存位址。

4樓:嬴春淡婷

初學者?簡單來說,變數名,是給寫**的人看的,為了讓自己或別人很容易明白你的意圖。

但計算機並不需要變數名,它只需要知道乙個資料儲存的位置謹巖顫和長度棗帆就行了。

a這樣的形式,在語法上,代表乙個變數名。

a**乙個變數的位址。

實際上a在程式實際跑起來的時候並不存在,比如a裡面的值是5,那麼這個5是存在記憶體中的,同時,這個值5在記憶體中存在的話是必須要有乙個地祥敗址的吧?

c語言中變數的位址是什麼型別的

5樓:重慶新華電腦學校

變數位址是什麼型別, 這是個怪異的問題, 表示你沒有理解其基礎。

電腦的作業, 都是單純的資料與邏輯,* 我們說的十進位, 十六進位, 都只是對同乙個數字的不同表達方式, 在電腦中都是一樣的。

0x30(h) =48(d) =60(8) =110000(2)

變數型態, 指的是, 電腦對某位置的處理方式, 會依照宣告的型態採取不同的作業。

某乙個位址100(d), 存放內容48(d).

如果該變數宣告為char, 程式編譯過程會以 1byte 處理這個變數。 資料就是48(d), 你要說0x30(h)也行。 (只是人眼看到的字元不同, 數字的物理意義相同)

如果該變數宣告為int, 程式編譯過程會接連讀取2bytes做為資料, 這時候就要同時看位置101(d)裡面是放什麼。

你指的string, 只是告訴編譯器, 要怎麼去判斷與處理後面的變數。 並不是變數本身的型別或狀態。 對於電腦來說, 就。

c語言中變數的位址是什麼型別的

6樓:風若遠去何人留

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

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

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

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

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

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

7樓:千鋒教育

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

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

c語言記憶體中是否存在乙個區域,儲存著變數的符號,變數的型別和變數的首位址?

8樓:網友

c語言是乙個複雜的體系。需要很長時間才能研究透徹,其實我覺得這種說法不完備,不應該說是某乙個區域之類的。

通常不是這樣,但是在編譯時,將該記憶體作為某種應用程式使用。一種指標型別的變數,其內容是儲存在執行時可以更改的內容的「第乙個位址」。可憐的rtti系統提供執行時型別標記。

指令碼語言確實儲存了變數名稱和函式名的列表,以及型別資訊,它們的變數通常不是基本型別,函式也不是本機函式。

當然,有時除錯方便,編譯器將在編譯時將變數符號的位址關係寫到可執行檔案。因此,如果出現錯誤,除錯將是方便的。例如,當gcc編譯時,- g引數是可以的。

但即使是這樣,也不一定所有的符號都會被記錄下來,而且在編譯過程中會優化一些變數,而你將無法找到它們。

對於一臺計算機,它的世界沒有變數,常數。他生活在乙個簡單的世界中,它知道儲存空間、暫存器、記憶體等具有位址或可定址的(可以找到),通過執行命令來運算元據。每天按順序執行指令,指令通常會告訴它到某個位址資料移動,或將資料新增到減號、位址或更改當前執行的指令。

高階語言定義了變數、常量、結構,甚至物件。計算機不知道它們,但它似乎並不存在於計算機中,但它可能是記憶體空間或指令的一部分。為了讓計算機理解高階語言的概念,編譯器被髮明來幫助翻譯工作。

9樓:小莋

c語言標準不應該說編譯的東西是什麼,或者可以說,即使編譯結果包含問題中的資訊,也無法按照c語言標準獲得這些資訊。

雖然一般的編譯器一般不儲存資訊,但為了除錯或效能分析,常常會將類似的資訊(如除錯符號)儲存在可執行檔案或其他除錯檔案中,這樣您可以在偵錯程式中看到與識別符號值對應的資訊。

在編譯c / c++源**,有沒有這樣的東西作為「變數名」或「變數」。一切都被轉換為實際的位址(或/ ebp偏移到堆疊的頂部)。這個轉換的步驟是在編譯過程中完成的。

當然,有時為了便於除錯,編譯器在編譯時將變數符號的位址關係寫入可執行檔案。這樣,如果有問題,除錯會更方便。例如,當編譯gcc時,g引數就可以了。

然而,即使如此,並不是所有的符號都會被記錄下來,一些變數在編譯過程中會被優化,這是不可能找到的。

如果您使用gcc的g編譯,它將帶有符號符號的名稱,但這通常是乙個全域性變數和乙個全域性函式。我不記得函式的內部或內部。

變數型別

在組合語言或機器**中編譯程式之後,變數已經是處理器可以處理的型別。

嚴格地說,原始型別的資訊大部分時間都丟失了。

例如,size_t,成為int,除非你能從該元件的**,這是size_t。

變數的第乙個位址

不是所有的變數都有第乙個位址,對吧?

如果它是結構的乙個成員,則由指標訪問它,它將以位址的方式表示。

如果它是乙個簡單的型別變數,它可能直接包含在機器**中,並且不再存在位址。

例如,int = 99;

c語言變數儲存

10樓:尼見

b對,c語言中把定義在函式內部的變數稱為區域性變數,區域性了、變數的有效作用範圍i額侷限於所在的函式內部,例如形參就是區域性變數。

a對 全域性變數和靜態區域性變數都分配在計算機的靜態儲存區。全域性變數可以被所有函式呼叫。它的生命週期從程式開始一直到程式結束。並且,自動變數又稱區域性變數分配在動態儲存區。

c 是對的,區域性變數儲存在動態儲存空間裡。只有靜態區域性變數才儲存在靜態儲存空間裡。

順便說下。我是軟體工程專業的,可以很負責的告訴你。樓上的答案是錯的。如果樓主還有什麼不懂的可以問我。,

11樓:網友

a錯,全域性變數不一定就是靜態儲存的,b對 區域性變數就是隻在本函式範圍內有效。

c對這是本人的答案 謝謝~~~

C語言中定義變數a,其地址還會不會變了?像a b,意思是值變了,地址沒變?那怎麼變化a的地址

不會,a b的意思是把b賦值給a,舉個例子就是a 1的意思就是把1這個值賦予給a,1的值既不會變化也不會改變地址。想要變化a的地址應該用指標變數吧,a b這種。c語言中,一個變數的值進行減運算後,這個值的記憶體地址也變化了。是嗎?記憶體地址是不會發生變化的,只是儲存在這塊內從中的值發生了改變。如果想...

C語言中p a就是指標p指向變數a的地址嗎

那要看是什麼情況了,如果是定義的時候賦值就是把a的地址賦給p如 int a int p a 如果不是初始化就是把a的地址賦給p裡儲存的地址,如 int a int b int p p b p指向b的地址 p a 讓b存著a的地址執行結果如下 第二項試圖將a的地址放在p指向的b裡,因為b是 int 而...

C語言中,如何表示變數的n次方,C語言中,如何表示一個變數的n次方?

c語言中計算一個數的n次方可以用庫函式pow來實現。函式原型 double pow double x,double y 如下 include include intmain 注 使用pow函式時,需要將標頭檔案 include包含進原始檔中。擴充套件資料 其他方法表示一個數的n次方 include ...