『壹』 在計算機中常量有沒有地址
有,常量和變數都有地址,只是常量地址對應存儲單元不更新
『貳』 c語言中,常量到底占不佔內存空間
c語言中,常量占內存空間。
變數使用前必須先進行定義。在內存中分配一塊存儲空間給變數,以便以後存儲數據。如果定義了多個變數則為多個變數分別分配不同的存儲空間。
不同類型的變數佔用不同大小的存儲空間,因為內存極其有限,分配適當的存儲空間可以以最少的空間來存儲它們,以節省空間。
(2)c語言中常量在內存里有沒有地址擴展閱讀:
變數使用注意:
變數的作用域:從變數定義的哪一行開始,直到代碼塊結束。
Return;退出函數,清除內存中的數據。
建議:使用矩形方框和excel來分析內存。
代碼塊{}的作用:可以用來提高性能,即時回收不再使用的變數。
『叄』 C語言,一個常量為什麼不能取地址比如&8或者&2056之類的
只有保存在內存中的變數或常量,才會有一個與之相關的內存編號(地址)。像8,3.14159,"yes"等直接量,它們的值不會、也沒有必要保存到內存中。因此,一般不能取這樣的直接量缺毀的地址。
此外,也不能取一個宏的地址,如:
#define PI 3.14
//不能取PI的地址
//double *p=Π
以下可行(且是常規做法):
const int n=1;
const int *pi=&n;
因為n保存漏叢在內存中,而const用來指定這個內存不可修改。
以下也可行(但是非常規做法,有風險):
int *pi=(int*)2056;
這句的意思是將2056當成一個內存的地址,令pi指向這個地址。因為編號為2056的內存的情況是未知的(它是哪個程序的?是系統內存?是位於數據區還是代碼區?可讀寫嗎?伏搜備),因此,這樣存在巨大的風險。
『肆』 請問c語言里常量有固定存儲地址嗎
這是這樣子的陪罩殲,當你定義一個變數a,b以後,這時在內存中就產生了兩個地址,再給兩個地址存儲值,這蘆沖個8就是存悶祥儲在a,b地址中的值。
8是一個值,如果沒有定義在內存中是沒有的,當你定義一個變數以後,產生了一個地址,這個地址中存了一個數值8。
『伍』 為什麼&4在c語言中不行呀! 難道常量沒有地址嗎!
首先,4是常量(且有地址),但在C語言中規定了&只能對變數使用,對常量使用&是沒有定義的(也就是說沒規定這樣的操作是什麼意義),所以結果是未知的,有的編譯器認定為錯,有型彎銷的認定為對,但是給出的結果也不是你想要的(給出的並不卜游是鬧拿常量的地址)。
『陸』 C語言,為什麼常量不能取地址比如&508
變數可以取地址,因為編譯器會在內存中分配一個空間來存儲對應的數值。
常量,尤其是數值型數據,它會被直接放到匯編指令裡面,比如一個賦值語句
c=508;
編譯衡森的結果,很可能就是MOV R1, #508這樣的一個匯編語句。
那就談不上地址了。
字元串型常量,比如「HELLO」咐迅畝,它就會是放在某個內存空間中,待程序去讀取的。
這個問題,可以通過反匯編來查看。高級語言的行為,最終是要轉換成機昌襪器語言來得到執行的。
『柒』 請問c語言里常量有固定存儲地址嗎
int a,b;a=8;b=8;這首先是一個定義變數並給變數賦值,實際上並沒有涉及到常量,呵呵,但是它們有不同的地址,因為它們的變數名不同,地址是根據變數名分配地址的,那麼常量呢,它也是有地址的,只是和變數存貯的地方不同,但是存儲的形式是一樣的,就是在內存的地方不同,內存中有專門放常量的,通過存儲方法的角度是區分不了變數和常量的,只能通過其存儲的值是否變化來區分(以人的角度),和存放的地點不同區分(機器的角度)
『捌』 c語言中,常量是存放在內存中嗎
關鍵的是,常量和變數是放在不同的"段"(section)里,程序一旦載入,常量/變數自然都在內存里了。
常量和全程變數,通常放在初始化段;局部變數,通常在棧里;
還有一種情況,比如匯編里的立即數(mov
ax,
12),它是直接放在指令里的,也即是代碼段里.
『玖』 c語言中,常量是存放在內存中嗎
常量和變數是放在不同的"段"(section)里,程序一旦載入,常量/變數自然都在內存里。
在程序的運行過程中,把需要處理的數據存放在內存儲器中,稱始終保持不變的數據為「常量」,稱存放可變數據的存儲器單元為「變數」,其中的數據稱為變數的值。
整數是以補碼的形式轉換為二進制代碼存儲在計算機中。
實數是以IEEE754標准轉回換為二進制代答碼存儲在計算機中。
字元本質實際也與整數的存儲方式相同(先通過ASCII碼把字元轉換為對應的整數,再按整數以補碼形式轉換為二進制)。
(9)c語言中常量在內存里有沒有地址擴展閱讀:
在除了『C/C++』的一些高級程序語言中,『常量』可以被稱作,「在一個信息變化過程中,始終不發生改變的量」,其可以是不隨著時間變化的某些量的固定信息;也可以表示為某一數值的字元(或字元串),常被用來標識、測量和比較兩者的差異。
但在 『C/C++語言中』,『常量』如果還用『運行過程中不變的量』來描述,就顯得不太准確了,甚至是在具體使用時,這就是一個錯誤的概念。在 『C/C++』中,定義『指針常量』時,根據『const 』的位置的不同,可以定義出幾個不同的形式,雖然其看起來『符合常量的概念』,但是在實際運行中,其值或地址值是會發生變化的。所以本質還不是『常量概念』
『拾』 C語言常量和表達式有地址嗎怎麼讀取
這個情況比較多,不過一般說以下兩種情況下的常量是有地址的:
1、如果是以const關鍵字修飾變數而產生的「不可變變數」的話,是有地址的,如const
int
a
=
0。
但是嚴格來說const修飾只是產生了不可變變數,並不是嚴格意義上的常量。
2、字元串常量,例如
char
*a
=
"abc";那麼字元串「abc」就是一個字面值字元串,這是一個常量,其地址就是這個字元串第一個字元所在的地址。
再有像是字面值數字
"int
a
=
5"里邊的5,是沒有地址的。
表達式本身作為代碼,並不擁有地址。但是用來組成表達式的變數或常量是可以擁有地址的。
獲取一個常量或變數的地址可以用「&」取址符,例如:
const
int
b
=
0;
const
int
*
pb
=
&b;
那麼pb里邊就是b的地址了。