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

時間 2022-05-06 04:09:21

1樓:匿名使用者

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

2樓:豆豆愛上天使

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

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

3樓:匿名使用者

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

4樓:匿名使用者

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

所以選a。

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

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

5樓:匿名使用者

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

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

6樓:重新整理①丅

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

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

7樓:匿名使用者

首先要知道:

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

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

2.出現不同的原因:

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

3.一些討論:

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

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

8樓:匿名使用者

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

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

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

c語言有關sizeof的問題

9樓:雨諾與諾

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

10樓:匿名使用者

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

11樓:受映冬俟山

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

12樓:匿名使用者

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

'a'則只是乙個byte

13樓:怕霓

看起來像是16位機;

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

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

關於c語言sizeof的問題

14樓:風若遠去何人留

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

c語言的sizeof()問題

15樓:

你的平台有問題吧?我用vc++6.0經常用printf("%d" ,sizeof(int));這樣的句子,結果是4而不是1……

16樓:汐_楓

sizeof(型別)返回的是該型別的位元組數,是乙個正整數,且不同軟體的型別的位元組數也是不一樣,

既然是整數,所有含%f(%lf…)會忽略sizeof(),等同於printf("%f");0代表輸出錯誤;

因為lld貌似是c++才有的,c用的是__int64,因此會因型別無法識別而亂碼,vc++6.0前面四個都是4,不知道你用的是啥軟體

17樓:匿名使用者

注意sizeof的返回值型別是乙個size_t型,而size_t是這樣定義的,typedef unsigned int size_t,也就是說它是乙個unsigned int型。所以只有第四個是對的,其它都會出錯。

乙個關於c語言sizeof函式的問題

18樓:匿名使用者

是,不過最好寫成sizeof(*x) 雖然按c標準sizeof只有用於型別的時候需要括號,但是直接給表示式如果不用括號有的編譯器會編譯出古怪的東西。

19樓:ghos丶

你最好能改一下寫法

int *x;

x=(int *)malloc(5*sizeof(x));=== x=(int*)malloc(5*sizeof(int))

int **x;

x=(int **)malloc(5*sizeof(x)); == x=(int**)malloc(5*sizeof(int*))

乙個int型和乙個int*型 都占用了記憶體的4個位元組

c語言中的 *sizeof 問題 10

20樓:

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

2個位元組。

21樓:芒柔諫珠雨

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

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

22樓:

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

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

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

c語言sizeof問題

23樓:吉紫萱功彭

你確定是14?

經測試sizeof(string)

應該是字串自身的大小

14沒錯

sizeof(string+n)

0<=n<=字串的長度

大小一律

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

24樓:鮮日國漢

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

25樓:智傲易奉幹

巨集被替換為後面的

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

26樓:匿名使用者

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

27樓:匿名使用者

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

28樓:過磊金韋曲

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

char

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

29樓:昝和儲平寧

int佔2個位元組

char佔1個位元組

float

佔4個位元組

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

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

一共是12個位元組

30樓:崔蒙洪槐

int2b+char

1b+float

4b+char

[5]5b

=12b

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

如該例中的char

u1[5]佔了5byte比int

u2[2]多乙個位元組。

31樓:匿名使用者

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

32樓:官悌房馨蓉

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

c語言 sizeof的問題

33樓:匿名使用者

在計算機中,指標所佔的位元組數是和計算機的位數有關的。計算機一般有16位、32位、64位之分。通俗點說:

計算機的位數,是由你的記憶體大小決定的。假如你的記憶體是2g,那麼是16位機;記憶體是4g,那麼是32位機;記憶體是8g,則是64位機。

現以32位機為例:在32位機中,不論是(cha *p)、(int *p)、(float *p)、(double *p),利用sizeof(p)計算它們在計算機中所佔的位元組數時,結果都是4(單位:位元組)。

如果是在64位機中,這一結果將會變成8。

34樓:請叫我影

p是指標

*p才是你想要的ar

sizeof(p)是p的大小,p是指標。。

35樓:匿名使用者

sizeof(p)求的是char型別的儲存空間。

c語言 關於sizeof問題,C語言 關於sizeof問題

我來回答你的問題 sizeof函式的意思是統計變數長度。int的長度長2個位元組 char的長度長1個位元組 float的長度長4個位元組 union uuua的長度取決於其中成員中最長的變數的位元組長度,在這裡為char型別,共五個元素值,長度為5。那麼開始統計總長度也就是2 1 4 5 12 希...

關於C語言的問題,關於c語言問題

先說明一點,c語言中巨集和函式有些差別,巨集是 第乙個例子,double 1 2 這個呼叫實際上是2 1 2,看,x被為1 2,然後根據運算子的規則 實際上應該說是優先順序 先運算2 1,再加上2,所以結果是4。第二個例子就更簡單了,同樣是,toupper s i 這個呼叫,實際上它的 就是 a s...

關於C語言的問題,關於c語言的問題

選a,輸入函式scanf 是不能指定小數點精度的,d也不對,因為輸入的必須是位址,可以改成scanf f a 就對了。scanf f a 答案是d,應為你定義了實數,實數本身就可以帶小數點的,沒必要申明,在輸出時申明保留兩位就行了。scanf a scanf函式對小數字數沒有限制!關於c語言的問題 ...

關於C語言的問題,關於c語言的問題?

include using namespace std define limetline double f double x int main else 以下取本輪的誤差。dlim b a while dlim limetline 當 誤差限 小於 允許範圍時,中止迴圈,cout 方程的解是 dmi...

c 中sizeof 的問題

準確地說,都不對,因為都傳遞進去的是乙個指標,一般32位,也就是4個位元組,你的字元陣列正好是4個位元組,所以你認為是對的 如果將b改為5個或者6個元素再看看對不對 求數字的長度時,請用如下 type a 10 size t size sizeof a sizeof type type是陣列的型別,...