『壹』 c語言中一個常數的地址是一定的嗎
這里p的地址和a的地址是不同的,你可以這樣理解:
存儲空間可以看成是一間一間的屋子,每個屋子都有自己的編號,變數的值就是貨物。
當你定義a這個變神慎量的時候,如果沒有特別指定,那麼會隨機安排存儲空間,打個比方:存儲空間1000—1002被用來存儲變數a的值,那麼1000—1002這幾個屋子就被命名為a,而a被賦值的值就是存儲在這幾個屋子中貨物,例如你問題中的19。
p你同樣可以看成是一個變數,只是這個變數所對應的屋子不是用來存放19這樣的「貨物」的。而是存儲的放這個貨物的「倉庫的號此瞎帆碼」,就好像是你放了貨在1000—1002這幾個倉庫中,然後將倉庫的號碼記錄在本子上,然後將這個本子放在另一個叫p的倉庫中。
我們叫p這種變數為指針,這就是指針的實際意義。所以p有屬於它自己的地址,而它存儲著別的變數的地址森雹。這點一定要搞清楚,不然很容易混淆
『貳』 C語言的內存地址是按什麼順序排列的:比如是按從大到小還是內存自動分配的,請舉例
您問的具體是什麼?
(1)是地址編號和集成電路裡面(用顯微鏡看)各個單元的位置次序之間的關系?
(2)還是問程序中各個指令代碼執行的次序和地址編號之間的關系?
(3)還是問程序中各個變數的次序和地址編號之間的關系?
如果是(1),那麼
集成電路裡面各個單元的位置次序,一般是不公開的。所以人們不知道它的次序是從左到右還是從右到左還是別的方式。據說,現在的布局大多是交叉分散排列的,因為程序中經常出現連續訪問連續地址的操作,如此分散排列,可以使功耗分散,減小局部溫升,延長器件壽命。
如果是(2),那麼
一般的指令,除了跳轉指令和調用、返回指令以外,普通指令都是按照地址連續增加的次序,連續排列的。而且,匯編語言中書寫程序清單的次序,除了使用特殊偽指令規定地址(如ORG指令)處以外,都是按照地址編號連續增加的次序書寫的。如此,除跳轉、調用、返回指令外,書寫的次序就是執行的次序。
如果是(3),那麼
用匯編語言設計程序時,你可以隨自己習慣,覺得怎麼安排方便,就怎麼安排。
如果是高級語言,那麼,不同的編譯程序,可以有所不同。
不過,如果是C語言,那麼數組內部各個下標變數的地址,必須是按照下標由小到大地址也由小到大的次序連續安排。這是因為,C語言中,對指針的運算有嚴格規定。
例如p是指向整數的指針,則p+2就應該等於指向p所指的整數變數後面第二個整數變數的指針。於是(p+2)相應的物理地址,就應該等於p相應的物理地址加上2倍int變數的長度。 而對於數組,又是按照指針的概念來規定的。例如:a[2]就和*(a+2)完全等效。
『叄』 C語言中的變數的內存地址是不是不變的
全局變數和static變數地址不變,在棧上的局部變數或者在堆上面動態分配的都會變化
『肆』 C語言裡面的地址是什麼意思,指針指向一個變數的地址
C語言裡面的地址實際上就是一個內存單元的編號,計算機一般是以一個位元組為最小的存儲單元的,每個位元組就給它編一個編號,這個編號就是這個位元組的地址,這個編號也就是地址是具有唯一性的。指針指向一個變數的地址,這個類似於,通過知道房間號就可以確定這個房間的具體位置是一樣的道理,這個房間編號就是房間的地址。
『伍』 c語言中可以定義固定變數的地址嗎
變數就有地址,但是常量不會有地址。
比如
const int * p=&a;
就定義了一個變數指針,指向const int型的變數a
『陸』 c語言中可以定義固定變數的地址嗎萬分感謝
不能,在一開始創建的時候計算機就會自動分配給它特定的地址,況且有些地址還是不能訪問的。
『柒』 請問c語言里常量有固定存儲地址嗎
這是這樣子的陪罩殲,當你定義一個變數a,b以後,這時在內存中就產生了兩個地址,再給兩個地址存儲值,這蘆沖個8就是存悶祥儲在a,b地址中的值。
8是一個值,如果沒有定義在內存中是沒有的,當你定義一個變數以後,產生了一個地址,這個地址中存了一個數值8。
『捌』 C語言,所有變數的邏輯地址都是編譯後確定的嗎
是的。程序都是在絕敏運行階段分配內存,所有變數的邏輯地址都是在衡賀編譯後就確並攔枝定了,但都是相對的偏移地址,只不過全局變數是相對數據段的偏移,局部變數是相對程序棧頂的偏移。
『玖』 請問c語言里常量有固定存儲地址嗎
int a,b;a=8;b=8;這首先是一個定義變數並給變數賦值,實際上並沒有涉及到常量,呵呵,但是它們有不同的地址,因為它們的變數名不同,地址是根據變數名分配地址的,那麼常量呢,它也是有地址的,只是和變數存貯的地方不同,但是存儲的形式是一樣的,就是在內存的地方不同,內存中有專門放常量的,通過存儲方法的角度是區分不了變數和常量的,只能通過其存儲的值是否變化來區分(以人的角度),和存放的地點不同區分(機器的角度)
『拾』 c語言每部分內存都有一固定地址嗎不能改變
定義一個變數,系統的確會分配一個內存單元A來存儲這個變數。而A的固定地址已經是物理地址了。不需要在分配一個來存儲該地址。
該變數已經實際存在在內存物理地址上了。