c語言有關sizeof的問題,c語言關於sizeof的問題

2022-03-04 16:08:01 字數 4928 閱讀 4240

1樓:雨諾與諾

'a'和『0』都是字元型,一個字元型一個位元組,sizeof是算佔多少記憶體,'a'+'0',是轉化為int進行處理的,計算後是一個int型。int是整形,有的編譯器佔2個位元組,有的佔4個。所以是2,1

2樓:匿名使用者

因為'a'和'0'都表示的是字元,而字元型常量佔據的記憶體空間為1位元組,即sizeof('a')=1,sizeof('a'+'0')=1+1=2,另外條件中的sizeof(int)表示的是整型資料所佔的空間,和下面其實沒有關係

3樓:受映冬俟山

sizeof(a)

說的是結構體的大小2+1+2=5

sizeof(b)是指標b的大小,它在不同位的機器上佔的位元組數不同,在你的機器上可能是2了

指標不因為型別的不同而使佔的自己數變化

它就是一個整型佔的位元組數

char

*p;int

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

printf("%d\n",sizeof(q));

結果都是2,不信自己試試

4樓:匿名使用者

'a'+'0',是轉化為int進行處理的。

'a'則只是一個byte

5樓:怕霓

看起來像是16位機;

'a'與'0'都是char型的常量,一個char型的位元組為1。

另外值得注意的是char、int、long等等各種資料型別的位元組數和機器的位數有關。

c語言關於sizeof的問題

6樓:匿名使用者

d,現在的機子,一個int型一般都是4個位元組,所以3*4=12.

7樓:豆豆愛上天使

sizeof這個關鍵字的用法是這樣的,它只顯示建立之初的資料型別的大小,這題裡面的標準應該是

每個int型的資料是2個位元組(在vc編譯器裡面或者c++裡面一個int是4個位元組),這裡,你建立的型別struct date裡面包含有三個int型的變數,因此就是6個位元組了,要注意的是,它只顯示建立之初的資料型別大小,也就是說,即使,你在程式執行過程中,改變了struct date這個資料型別的結構,它還是會顯示6個位元組的

8樓:匿名使用者

選d,結構體中訂義了三個整型變數,每個佔4個位元組。

9樓:匿名使用者

這是計算機二級題目?那個c語言考試至今停留在16位計算機的時代,int是佔兩個位元組的。

所以選a。

但是現在最低都32位機器了,所以在自己的電腦中的vc/vs環境下應該是選d的。

只是為了應付考試,那就選a吧~~

10樓:匿名使用者

a吧,自己編譯執行一下不就知道了?另外**的格式還是要注意的。

c語言,關於sizeof(陣列名)的問題

11樓:重新整理①丅

當陣列名作為函式引數傳遞後,「退化」為指標,sizeof自然也就不能得到陣列的長度,只是得到一個指標的長度而已。

你的試驗**裡,陣列名並沒有作為函式引數傳遞過,他還是一個陣列名,所以sizeof還是能得到陣列的長度。

12樓:匿名使用者

首先要知道:

sizeof(陣列) 得到陣列記憶體大小

sizeof(指標)  得到指標記憶體大小

2.出現不同的原因:

題主是直接sizeof(陣列)所以得到陣列記憶體大小。教程裡,這個陣列名傳進去函式之後,由於傳參採用了值傳遞方式,函式內部會生成一個同名的臨時指標變數,儲存陣列首地址,它是一個指標,此時教程sizeof的是指標,所以得到指標記憶體大小。

3.一些討論:

sizeof不是函式,它是運算子,不會導致陣列名傳參而退化為指標的情況發生。題主沒有錯,教程也沒有錯。因為兩個score的情況不同。

一個是宣告的陣列名,一個是函式內部的同名臨時指標變數。

13樓:匿名使用者

你可能理解錯了,sizeof它返回的是陣列所佔的記憶體空間的大小。

arr這個陣列共有15個元素,每個元素佔4位元組記憶體空間,所以得出的是60。

另外,int型別的地址儲存空間是4,而不是8。

關於c語言sizeof的問題

14樓:風若遠去何人留

主函式應該是main,你打錯成mian了

c語言關於sizeof問題

15樓:政者法墨

圓圈1的結果是4,因為temp[0]是1,1是單精度浮點型的數字,佔4位元組位,

圓圈2的結果是10,因為sizeof(temp)是4x10=40,40、4就是10,即就是陣列元素的個數。

c語言sizeof問題

16樓:吉紫萱功彭

你確定是14?

經測試sizeof(string)

應該是字串自身的大小

14沒錯

sizeof(string+n)

0<=n<=字串的長度

大小一律

是4,這個好解釋,做了+n運算之後string+n就是一個地址了,sizeof得到的是字串指標的大小,所以是4位元組

17樓:鮮日國漢

同意樓上的答案,'e'為char型別常量,char型和short型參與運算時,必須先轉換成int型,所以sizeof('e')就是求int型別再記憶體佔用位元組

18樓:智傲易奉乾

巨集被替換為後面的

也就是說sizeof(string+1)被替換為sizeof("hello,world!"+1),嚴格來說這個都算語法錯誤,因為sizeof後面應該跟一個型別。所以預設的求得是字串的長度,後面的會被忽略。

19樓:匿名使用者

選cchar字元是一個位元組的,所以是1float是四個位元組的,所以是4而int這個有點特殊,有2個位元組,也有4個位元組double是8個位元組的,所以是8sizeof是這個型別所佔用的位元組數

20樓:匿名使用者

答案選c 在c語言中char int float double 分別佔1 2 4 8 個位元組大小.sizeof()是計算變數所佔記憶體的大小

21樓:過磊金韋曲

共用體的長度等於裡面最長的成員長度,所以共用體裡面的

char

u1[5],最長,所以,他的總長度為2+1+4+5=12,謝謝,祝您週末愉快~

22樓:昝和儲平寧

int佔2個位元組

char佔1個位元組

float

佔4個位元組

加上公用體中的char型別的陣列5個

再加上int的陣列2個位元組

一共是12個位元組

23樓:崔蒙洪槐

int2b+char

1b+float

4b+char

[5]5b

=12b

聯合體是指多個變數共享同一個起始地址。聯合體的總位元組數為佔位元組數最多的變數的位元組數。

如該例中的char

u1[5]佔了5byte比int

u2[2]多一個位元組。

24樓:匿名使用者

經下列語句「char x=65 ; float y=7.3; int a=100; double b=4.5;」定義後,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在微機上的值分別為(b) sizeof的功能:

判斷資料型別長度符(求位元組數,我說這個是為了讓好理解一點)解:char 在系統記憶體是佔一個位元組,所以他的結果是1; float 在系統記憶體是佔二個位元組,所以他的結果是2; int 在系統記憶體是佔二個位元組,所以他的結果是2; double在系統記憶體是佔四個位元組,所以他的結果是4; 按照sizeof的功能,不是求該變數存了多少,而是求該變數在系統定義什麼型別,輸出的結果是型別佔用記憶體的多少,所以答案是:b

25樓:官悌房馨蓉

不知道你怎麼算的。我在vs2010上試了試,結果應該是20

關於c語言結構體大小的問題 sizeof

26樓:匿名使用者

64位的機器,指標要佔8個位元組,呵呵,還真不知道哩。

結構體中是按照結構體中某個型別的最大基本單位寬度來對齊的。

當結構體中某個型別的最大基本單位寬度超過機器字長,那麼就只要按機器字長對齊就行了,而且佔用空間只需要是機器字長的整數倍就好了。

27樓:匿名使用者

你的機器是64位按8位元組對齊分配空間,因此struct s1是24,分析如下:

struct s1

;struct s2;

28樓:匿名使用者

#include

struct s1

;struct s2

;int main ()

我的是32位系統,輸出是16和24

29樓:匿名使用者

記憶體管理優化了, 你要知道, 記憶體對齊的目的, 只要能夠用最小的記憶體對齊了,就好了, 不會過多的浪費記憶體。

30樓:匿名使用者

在*86__32bit機上執行,s1: 4*2+4+4 = 16, s2:4+16+4=24;在s1中,由於最大的型別長度為4byte,故而該結構體關於4byte對齊;而對s2,由於含有結構體s1的巢狀,它關於它自身所定義的變數中的最大型別長度對齊,而不是關於結構體s1對齊, 關於結構體"對齊"問題比較饒人,你可以上網多搜搜這方面的資料,再琢磨琢磨,希望對你有幫助。

C語言裡面的sizeof是什麼,C語言中,sizeof是一個?

d選項,因為一個int型別的資料需要的大小是4個bytes,double型別是8個bytes。ps 不同的語言可能有所不同。是用來輸出某個型別的大小的函式,比如int是幾個位元組的 用來獲取某一字元型別長度的函式 sizeof 是一個獲取資料型別或者表示式長度的運算子 例如 sizeof int 就...

有關C語言的問題急,C語言報錯的問題?

首先解釋你的5個0的問題。五個零是printf語句出來的。f格式,預設輸出小數點後6位數字,跟你資料型別沒有任何關係,這個很簡單吧。如果想讓他輸出小數點後一個0,那就是 1f,想輸出3個0,就是 3f 這個明白了吧,很簡單。printf控制格式的問題。跟你float還是double還是int沒關 第...

c語言問題,C語言問題C語言問題

沒有縮排,看來比較累 但是輸入一串字元以後要輸入結束標誌eof表示你的輸入結束了 如果你是unix,就用ctrl d,dos就用ctrl z include define maxline 1000 maximum input line length int getline char line,int...