c語言中SIZEOF的問題,c語言中的 sizeof 問題

2022-11-27 04:16:40 字數 5919 閱讀 8262

1樓:連嘉悅牢義

我來回答你的問題:

sizeof函式的意思是統計變數長度。

int的長度長2個位元組;

char的長度長1個位元組;

float的長度長4個位元組;

union

uuua的長度取決於其中成員中最長的變數的位元組長度,在這裡為char型別,共五個元素值,長度為5。

那麼開始統計總長度也就是2+1+4+5=12;

希望你明白,祝您開心,很榮幸為您回答問題。

2樓:凌曦

分整型和長整型

整型為2 長整型為4

是哪種要看開始的main中怎樣定義

不是跟編輯器有關的

如果沒有特殊的標註 例如long***

一般預設為整型 輸出為2

3樓:匿名使用者

樓上所言是正確的哦,我來混點分,呵呵

型別大小 是跟編譯器相關的,自己也可以在編譯器選項裡面設定

也可以通過**來操作

c語言中的 *sizeof 問題 10

4樓:

選a因為union是共用體,他們用同一段記憶體空間,每次用時,都是覆蓋式的,第一次時分配1個位元組,第二次時分配2個位元組,公用上次分配的一個自己的空間,同理下推,結果就是型別長度最長的那個。所以int

2個位元組。

5樓:芒柔諫珠雨

對。。。在vc++下,int佔4個位元組,a陣列有2個成員,所以結果是8.。。

其他編譯器中int佔2個位元組的話結果就是4

6樓:

double是雙精度浮點數,比float 能表示小數點兒後更多的位。

語法上可以不一樣,malloc的引數是分配置記憶體的大小,你寫個240代替30*sizeof(double)

也是可以的,但是不直觀。返回值是void *,  前面的(double*)是強制型別轉換,應該是要賦值給一個double*的變數。

c語言中sizeof是什麼意思

7樓:肥仙女

sizeof是c語言中保留關鍵字,也可以認為是一種運算子,單目運算子。常見的使用方式:

int a=10;

int arr=[1,2,3];

char str="hello";

int len_a = sizeof(a);

int len_arr = sizeof(arr);

結果是:len_a=4,len_arr=12,len_str=6

8樓:匿名使用者

int一般佔據四個位元組,double佔據八個位元組

9樓:匿名使用者

char p=,q="abc";

給字元陣列p賦值,共3個元素:'a','b','c'

給字元陣列q賦值,共4個元素:'a','b','c',"\0",因為直接用字串給字元陣列賦值的話,系統最後會加上一個"\0"

sizeof表示字串元素的個數。

10樓:

sizeof是c/c++中的一個操作符(operator),簡單的說其作用就是返回一個物件或者型別所佔的記憶體位元組數

在你的程式中就是輸出p和q陣列所佔用的位元組數

11樓:聽不清啊

sizeof是計算物件所佔的位元組數,通常用來檢視變數、陣列或結構體等所佔的位元組個數。

比如:int a;

char s="he likes swim very much."

struct

person;

sizeof(a); // 計算變數a所佔的位元組數,等價於sizeof(int)

sizeof(s); // 計算字串所佔的位元組數(包括串尾的串結束符'\0'在內)

sizeof(person); // 計算整個結構所佔的位元組總數

12樓:竹林傾聽雨

指的是該物件在記憶體中所佔的位元組數,

例如:你的sizeof(p)是3,佔三個位元組,sizeof(q)佔4個位元組

因為字元陣列還有一個界定符'\0',用來標識字串的結束。

13樓:喻元愷

就是取他在記憶體中佔的寬度啥

c語言sizeof問題

14樓:吉紫萱功彭

你確定是14?

經測試sizeof(string)

應該是字串自身的大小

14沒錯

sizeof(string+n)

0<=n<=字串的長度

大小一律

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

15樓:鮮日國漢

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

16樓:智傲易奉乾

巨集被替換為後面的

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

17樓:匿名使用者

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

18樓:匿名使用者

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

19樓:過磊金韋曲

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

char

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

20樓:昝和儲平寧

int佔2個位元組

char佔1個位元組

float

佔4個位元組

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

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

一共是12個位元組

21樓:崔蒙洪槐

int2b+char

1b+float

4b+char

[5]5b

=12b

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

如該例中的char

u1[5]佔了5byte比int

u2[2]多一個位元組。

22樓:匿名使用者

經下列語句「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

23樓:官悌房馨蓉

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

c語言中 sizeof()

24樓:匿名使用者

sizeof(p)就是求陣列p佔用的所有記憶體尺寸,不會理會其中裝載什麼資料。

c語言中sizeof的問題

25樓:匿名使用者

在函式內部,「sizeof(buff)」相當於是sizeof(char*),指標型別大小就是4。傳引數時傳的不是陣列,而是陣列首地址。

26樓:薩爾那加

實引數組名傳參至形參,陣列名退化為指標,char str退化為char* str

關於c語言sizeof的問題

27樓:風若遠去何人留

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

c語言有關sizeof的問題

28樓:雨諾與諾

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

29樓:匿名使用者

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

30樓:受映冬俟山

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,不信自己試試

31樓:匿名使用者

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

'a'則只是一個byte

32樓:怕霓

看起來像是16位機;

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

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

c語言sizeof()使用的問題

33樓:匿名使用者

因為在fn裡面陣列退化成指標了,所以sizeof(b)返回的是一個指標的大小

如果你想在fn裡面獲得和main裡面同樣的效果,則需要告訴fn引數的大小,不過這樣就限定了陣列引數的大小了參見#include

;fn(temp);

printf("%d", sizeof(temp));}

34樓:千秋

int型變數在記憶體中佔4個位元組,double型變數在記憶體中佔8個位元組

sizeof是獲取引數的大小,所以答案是4和8

35樓:匿名使用者

在fn函式裡,形參float b其實與float *b是等效的。

也就是說,在這裡b實際上是一個指標,而在32位機器上,指標的大小是32位的,也就是4個位元組。

而在主函式裡,temp是一個陣列,具有10個float元素,所以大小是40個位元組。

36樓:匿名使用者

肯定不一樣哦,sizeof是靜態不是動態計算,你在執行前這個值就有了,另外陣列作為函式的引數,跟指標類似。

c語言中sizeof啥意義,c語言中SIZEOF啥意義

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是一個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...

C語言中有什麼意義,c語言中SIZEOF啥意義

是按位取反,即把變數在記憶體中的值的二 進位制形式的各位,1變成0,0變成1.比如67的二進位制是01000011,後變成10111100 是位左移,比如67 3,就是把01000011左移3位,變成00011000.0 是c c 裡面的單目運算子,它按位取反後返回。你的這個 temp 0 1.0左...

C語言問題if語句巢狀C語言中三個if語句的巢狀怎理解

要點是1 if與else的成對關係依照就近原則2 if與else的成對關係遇到花括號時,就近原則找相成對花括號3 區域性 塊一定要加括號 if a 1 if b 1 printf yes n a 1且b 1時執行else printf no n a 1且b 1時執行 用括號括起來更容易理解 if a...