當前位置:首頁 » 編程語言 » c語言指針的大小

c語言指針的大小

發布時間: 2023-05-13 05:38:01

1. c語言指針變數大小的問題

對於這個你只要記住一句秘訣就好,指針的大小僅僅取決指針本身的大小,不取決於指針指向的大小。 還有就是還有一個虛擬內存和物理地址的關系,有MMU映射,8086里有硬體完成一個地址偏移的過程,物理地址 = 基址*16 + 變址。

2. c語言中,指針變數為何只佔4位元組

在C語言中,一般認為內存是一個大的位元組數組,基本單位是位元組,每一個位元組包含一個地址,有多少個地址,是有CPU的地址匯流排位數決定的,所有的地址一般稱作地址空間,比如32位的cpu,地址匯流排的位數是32位,它可描述的地址空間為0x0000 0000 0000 0000 ~ 2^32 - 1,正是因為此,所以在32位的系統上,一般指針佔4個位元組,如果是64位系統,它可描述的地址空間為0~2^64-1,如果是64位的編譯器,指針佔8個位元組。

3. C語言 如何輸出指針所指向空間的大小

C語言無法輸出指針所指向的空間的大小!

一般,我們獲取亂友如一個變數所佔內嘩啟存空間的方法為:sizeof(變數名或類型名),如:

inta;
intaa[10];
int*p=aa;
printf("sizeof(int)=%d ",sizeof(int));//現在的機器一般為32位或64位機,int類型佔四個位元組,所以輸出4
printf("sizeof(a)=%d ",sizeof(a));//輸出4
printf("sizeof(aa)=%d ",sizeof(aa));//輸出4*10=40
printf("sizeof(p)=%d ",sizeof(p));//輸出4?見下面說明
printf("sizeof(int*)=%d ",sizeof(int*));//輸出4?見下面說明

指針變數定義:用來存儲內存地址的變數。指針變數中存儲的是內存地址數據(一個整型數),而不是真正的數據,真正的數據是在地址中存放的。所以,指針變告橋量實際上就是個整型變數,用sizeof命令去獲取任意類型的指針變數都會得到4。

指針變數存儲的是一個存儲空間的首地址,究竟這個空間有多大,可以存儲多少個數據,這是分配空間時所決定的。單獨看一個地址值,是看不出其空間大小的。如:

int a;

int aa[10];

int *p ; //定義一個指針變數

p=aa ; //指向數組aa,aa的數據空間是40位元組,10個整數

p=&a; //指向一個整型變數,它的存儲空間是4位元組,一個整數

4. C語言中指針的長度!

記住32位下的指針 都是4個位元組可以簡單的這么理解:一個基本的數據類型(包括結構體等自定義類型)加上「*」號就構成了一個指針類型的模子。這個模子的大小是一定的,與「*」號前面的數據類型無關。「*」號前面的數據類型只是說明指針所指向的內存里存儲的數據類型。所以,在 32位系統下,不管什麼樣的指針類型,其大小都為 4byte。

5. 在C語言中一個指針佔用多少位元組。

C語言規定一個指針佔4個字頌段節。
查看指野清譽針所佔位元組數可以用sizeof(
)函數進行測試。如:
char a[] = "abcdefgh";
char *p = a; //正喚 定義一個指針變數,指向字元數組a
printf("%d\n", sizeof(p)); // 輸出指針所佔的位元組數,輸出4

6. C語言里的指針怎麼比大小,都是地址到底誰大呀

本來就不存在誰大誰小,只有當指針是指向數組或字元串中元素時可以進行一些代數操作
如果是要比較指針指向的值的大小,請使用*操作符……但注意只有*p指向的數據類型可以比較才有效

此處是指向字元串的,大小就是p所指的元素(字元)在字元串中的前後順序

7. c語言指針占幾個位元組

在C語言中,無論指針指向的內容是什麼,指針總是佔4個位元組的。

8. 一個指針佔用幾個位元組

一個指針變數在內存中占兩個位元組(small模式編譯),一個指針變數在內存中佔四個位元組(32位機器上),一般都是32位機器的,所以四個位元組咯。

指針是一個特殊的變數,它裡面存儲的數值被凳拿解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的棗晌搭內存區、指針本身所佔據的內存區。

(8)c語言指針的大小擴展閱讀:

使用指針來讀取數據,在重復性操作的狀況下,可以明顯改善程序性能,例如在遍歷字元串,查取表格,控製表格及樹狀結構上。對指針進行復制,之後再解引用指針以取出數據,無論在時間或空間上,都比直接復制及訪問數據本身來的經濟快速。

指針的機制比較簡單,其功能可以被集中重新實現成更抽象化的引用(reference)數據形別。許多謹睜編程語言中都支持某種形式的指針,最著名的是C語言,但是有些編程語言對指針的運用採取比較嚴格的限制,如Java一般避免用指針,改為使用引用。

9. c語言中指針佔多少個位元組

指針占慧沖位元組數和編譯器有關.
如果是16位編前渣殲譯器,那麼指針佔2位元組.
如果是32位編譯器,那麼指針梁辯佔4位元組
如果是64位編譯器 那麼指針佔8位元組.
即 指針位數和編譯器位數相同.

10. 在C語言中是不是任意的同類型指針都可以比較大小,為什麼

指針變數無非就是一個表示內存地址的長整數而已,當然可以比較。指向同一個數組時,兩個指針的大小就表示誰指向的元素靠前或靠後。如果不是指向同一個數組,比較大小就只能看出誰指向的內存空間地址較小,沒什麼意義。

對變數a的訪問有兩種方式:

一是直接按地址0x065FDF4H找到a的存儲單元,從而對變數a進行訪問;

二是按系統為p=&a分配的地址先找到p=&a,然後根據p,&a的值(即變數a地址0x065FDF4H)找到變數a在內存中的存儲單元,從而對變數a進行訪問。對於前一種訪問方式稱為直接訪問方式,後一種訪問方式稱為間接訪問方式。

(10)c語言指針的大小擴展閱讀

訪問變數,首先應找到其在內存的地址,或者說,一個地址唯一指向一個內存變數,如果將變數的地址保存在內存的特定區域,用變數來存放這些地址,這樣的變數就是指針變數,通過指針對所指向變數的訪問,也就是一種對變數的「間接訪問」。

設一組指針變數pa、pb、px、py、pm、pch1、pch2,分別指向上述的變數a、b、x、y、m、ch1、ch2,指針變數也同樣被存放在內存,盡管所指向的變數類型不同,但是這些指針變數所佔內存空間都是2個位元組,而與所指向變數的類型無關。

熱點內容
python粘貼板 發布:2025-07-18 06:46:20 瀏覽:794
pro241會有什麼配置 發布:2025-07-18 06:46:15 瀏覽:645
android下載實例 發布:2025-07-18 06:43:00 瀏覽:444
java完全數 發布:2025-07-18 06:40:46 瀏覽:275
微信投訴怎麼上傳圖片 發布:2025-07-18 06:40:38 瀏覽:786
電腦版我的世界自救練習伺服器 發布:2025-07-18 06:22:25 瀏覽:263
光遇之前為什麼不在安卓上線 發布:2025-07-18 06:20:17 瀏覽:284
c語言偏移 發布:2025-07-18 06:03:01 瀏覽:889
甘肅雲堤伺服器 發布:2025-07-18 06:02:52 瀏覽:650
狼人殺腳本群 發布:2025-07-18 06:00:45 瀏覽:289