c語言相同型別的變數佔用記憶體一定一樣嗎

時間 2021-05-07 20:01:38

1樓:匿名使用者

不一定。機器型別不同,同樣都是整型,佔用記憶體可能不同。比如16位機,整型可能是16位,32位機,整型可能是32位。

跟採用的編譯器也有很大關係,有的編譯器把整型編譯為16位,有些編譯為32位。

2樓:錯過

一樣,你定義變數型別的時候記憶體空間就已經分配了,而且是固定大小的記憶體!

不過有的程式軟體規定的儲存空就按可能有區別;一款軟體上肯定是一樣的!

不論存不存數!

3樓:匿名使用者

除了int外,其他都一樣。int在某些機子上是2位元組,在某些機子上是4位元組。但在同一臺機子上,肯定是一樣大小的。

4樓:匿名使用者

和作業系統有關,比如,window7有的是32位的,有的是64位的,所以對於int型,32位的作業系統就是32bit,用4個byte的記憶體...64位的就是64bit,用了8個位元組的記憶體。。其他型別基本一樣

在c語言中,只有在使用時才佔用記憶體單元的變數,其儲存型別是()

5樓:鐳毅

a排除法:

static是不可能的,排除c\d

b是外部的register型變數。

c語言中,對於儲存型別為(c)的變數,只有在使用它們時才佔用記憶體單元

6樓:匿名使用者

static是靜態變數,在程式中的生命週期是最長的,在程式執行中一直存在。extern是外部變數,這個變數在程式外部定義,也是始終存在的。而auto和retister都是在程式執行到這裡時申請記憶體單元,用完後隨即就釋放了。

指標的資料型別為什麼要跟所指向的資料的型別一致,不是說所有的指標變數佔用的記憶體大小是相同的嗎??

7樓:匿名使用者

指標變數所bai需要的儲存

空間的確du是相同的zhi

。它都需要最高字長dao的儲存空間。

但在指標指向內不同型別的容

資料型別空間時,指標操作是不同的,見下示例**:

unsigned char * ptrchar;

unsigned int  * ptrint;

ptrchar=(unsigned char *)0x0000;

ptrint=(unsigned int *)0x0000;

ptrchar++;

ptrint++;

最後兩個指標++操作,看**都是用的加加操作符,但實際上,指向無符號char型資料的指標,在加加操作後,ptrchar中的值是0x0001,因為每個無符號char只佔用一個位元組,而ptrint在加加操作後,其值是0x0004,因為每個整型佔用4個位元組。

8樓:安城百合子

這是c語言的語法要求,因為不同型別的指標,在作+-運算時,它的步長是不一樣的。

9樓:

所有的指標變數佔用的記憶體大小是相同的,這個記憶體中儲存的不是資料的值,而是指標的

回值,指標的值答是一個記憶體地址,也就是指標指向資料的首地址,根據這個地址只能得到指標指向資料的開始位置,並不知道這是什麼型別的資料,所以指標的型別就決定了資料的型別

10樓:匿名使用者

你是什麼指標?很多語言都有指標的。

指標儲存的是資料的首地址,它指向和它同一型別的資料。跟佔用多少空間沒關係。用int型指向int型,double指向double型,等等。如果不匹配會發生錯誤。

11樓:匿名使用者

是的,它只是要知道你指向的資料是什麼型別而已。

12樓:匿名使用者

所有指標 都是佔來用4個位元組這個是自沒錯

但是為什麼bai不能用du呢?給你舉個例子。

int a = 0x00000fff;

char *p = &a;

printf("%d\n", *p);

結果是255。也zhi

就是說 每一dao個型別的指標所取的bit長度不一樣!char型別佔用8bit, int 32bit,short 16bit。

上邊這個例子不好

由於 是有符號的 所以255 打出來是-1改一下int a = 0x00000f0f;

這樣的話就是15了

c語言中,int, char和short int三種型別變數所佔用的記憶體大小是

13樓:匿名使用者

c語言中,int, char和short int三種型別變數所佔用的記憶體大小因機器的不同有所不同。

一般在32位及以上機器上,int佔四位元組,char佔一位元組,short佔2位元組。

可以通過sizeof()命令獲取本機器上的各型別的佔記憶體的大小,參考**如下:

#include

void main()

14樓:匿名使用者

int 四個位元組,char一個位元組,short int 兩個位元組vc++編譯器下,可用以下**測試:

#include

int main()

15樓:匿名使用者

分別佔4,1,2,int的大小與編譯器有關,有時可能也佔2位元組

16樓:苦孩子

在vc中是4,1,2

不同的編譯器可能佔不同記憶體

17樓:匿名使用者

似乎是跟編譯器有關,一般int 4個位元組,short int 2位元組,char 1個位元組

18樓:匿名使用者

32位計算機下分別是4,1,2位元組

19樓:shine過客_驛站

32位的計算機的話 依次就是4 1 2 16位的計算機的話 依次就是 2 1 1

20樓:wlc天使的眼淚

可以用sizeof(int )自己試試

c語言 設有以下結構型別說明和變數定義,則變數b在記憶體所佔位元組數是 _____。

21樓:匿名使用者

short佔兩個位元組

char佔一個位元組,陣列容量為3,所以總共佔3個位元組float佔四個位元組,陣列容量為2,所以總共佔8個位元組double佔8個位元組

總共加一起就是21個位元組

22樓:篤俠

short int -- 2

char -- 1*3=3

float -- 4*2=8

double -- 8

合計 21

求, c語言中所有常見的資料型別(如short,float,int,char,等等)在記憶體中所佔的

23樓:匿名使用者

變數佔用記憶體位元組

由作業系統決定,

64位系統中,long佔用8位元組,……

32位作業系統中,回int,long佔用4位元組答,short佔用2位元組……

16位系統中,int佔用2位元組,……

數字3佔用多少,和你宣告的的型別有關,

在32位系統中,將3賦值給short型變數,他就佔用2個位元組,如果賦值給int型,他就佔用4個位元組

可以用sizeof這個函式來計算。例子:

int x, n;

n = sizeof(x);

n的值就是結果。使用sizeof求,

#include

int main()

不同軟體編譯答案不同

24樓:匿名使用者

字元型 char 1 位元組

整型 int 2 位元組 short 2 位元組長整型 long 4 位元組

單精度 float 4 位元組

雙精度 double 8 位元組

c語言中,設定一個變數,它的數值大小(如20,20000)它們佔的位元組數相同嗎?位元組數與變數大小有關嗎?

25樓:匿名使用者

任何資料在計算機中都是二進位制表示,變數佔幾個位元組是編譯器決定,有可能是4個有可能是2個。現在編譯器編譯後基本都是佔4個位元組的。就是32個1或0組成資料

20用二進位制表示就是 00000000000000000000000000010100

20000 二進位制表示是 00000000000000000000000010100000

你可以看到在計算機中都是佔32位的,只不過不同位上 是0還是1的問題。

這樣說能明白些麼?

26樓:匿名使用者

1 變數的數值大小(如20,20000)不同,它們佔的位元組數相同。

2 變數的佔用的位元組數與變數的表示範圍有關。

27樓:沒有響應

這個在你設定變數的時候已經決定了

int a=20

int a=20000

它們在記憶體中佔的空間是一樣大的

28樓:匿名使用者

無關,佔用記憶體相同

小的資料高位是0

假如int是4個位元組

16的16進製表示是0x10

記憶體為0x00000010

65536的16進製為0x10000

記憶體為0x00010000

29樓:0o閉關修煉

只跟你的變數型別有關。跟變數的值無關。

c語言,double型別的變數使用scanf 函式賦值後再

c語言中double輸入輸出,都用 lf 進行格式化,是否寫成了 f,這個是float型別。include int main 2.字元定義如下 字元 對應資料型別 含義 d i int 接受整數值並將它表示為有符號的十進位制整數,i是老式寫法 o unsigned int 無符號8進位制整數 不輸出...

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

風若遠去何人留 變數的地址,在c語言中,一般寫作指標型別。不同型別的變數地址,用不同的指標進行儲存。比如,char 型別的地址,使用char 儲存,而int型地址,用int 儲存。除此外,部分情況下也會採用整型型別來儲存變數地址,具體使用何種整型型別,取決於編譯器 1 16位編譯器,地址佔16位,2...

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

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