C 中長度大小的問題!!C語言 字串長度問題!

2023-04-20 11:20:01 字數 1992 閱讀 5952

1樓:匿名使用者

這個涉及到結構體的記憶體對齊問題。

一、結構體變數中成員的偏移量必須是成員大小的整數倍(0被認為是任何數的整數倍)

二、結構體大小必須是所有成員大小的整數倍。

1,首先對於結構體test。

float佔4個位元組,char name[10]相當於2個節位元組,再加乙個2位元組。

由於剩下的2位元組不足乙個float,所以補2位元組空資訊到test.

所以test結構體總共為4+2*4+4=162.所以兩個test也就是a[2]就佔32有什麼其它的問題也可以問我,我hi常**。

2樓:匿名使用者

首先我們看看sizeof(test)為什麼=16?

test是乙個結構,由乙個10位的char型陣列和乙個float 型變數組成。那麼在記憶體中組成test這個結構的時候系統是怎麼分配記憶體的呢?10個char型變數是10位,乙個float型是4位。

理論上應該是10+4=14位,但是系統是這樣執行的。

11111111 8位位元組。

11111100 2個char佔兩位,乙個float佔4位。其餘兩位沒用,但是其他資料不得佔用。

這就是其在記憶體中的結構。佔16位。

響應的,sizeof(a)就是2個16位相加=32位。

3樓:匿名使用者

第乙個是(10+4)*2=28

第二個是 10+4=14

由於編譯器缺省會對長度進行對齊。

即2的整數倍。

所以28變32

14變16可以在頂部加句 #pragma pack (2)按1個位元組對齊。

4樓:丁飛閆闌

在主函式裡面:array為8個單位的整型陣列,佔32個位元組,sizeof(int)測整型的長度,為4個位元組,所以sizeof(array)/sizeof(int)=8;

在func1裡面:array為指標型別的形參,sizeof對任意指標測長度均為4個位元組,所以sizeof(array)/sizeof(int)=1

5樓:容霜柳會

voidfunc1(int

array)中。int

array為指標。sizeof(array)即指標的長度為4個位元組。

而sizeof(int)

為4所以結果為1

而主函式中sizeof(array)求的是陣列的大小。

這個陣列大小為4*8=32

除以4結果為8

注意。void

main()

呼叫fun1(array)

做了次隱式轉換。

將陣列首位址轉換為指標。

陣列的型別是int

而指標的型別為int

二者不完全等價。

6樓:碧闌摩寄柔

func1(array);

這裡array已經退化成了指標,不再是乙個陣列了,指標佔4個位元組。

所以4/4=1

c語言 字串長度問題!

7樓:匿名使用者

第乙個字串長度為9(\x44 表示d,\\表示\,表示回車,\102表示b)

0:a1:d

4:b5:c

6:d7:b

8:a---第二個字串長度為7(\t 表示製表符,\xab表示乙個字元,\3表示乙個字元,\\表示\)

0:x1:y2:z3:

8樓:匿名使用者

串1:9 串2:7

分析過程:1.\x44 按16進製制轉義 0x44 即:ascii碼為682. \轉義。

3. \102 轉義。

1. \t轉義。

2. \xab 轉義 同上, 轉義的是16進製製數 0xab3. \轉義。

#include

int main()

9樓:草民不懂不懂

16b、12b。和\t算乙個位元組其他就數過來。

c語言字串陣列逆序問題,C語言字串陣列逆序問題

第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...

C語言字串問題

本質原因是 陣列名是個常量,不可以賦值。所以char s 10 s world 是不合法的,因為你在給乙個常量賦值。而char s 10 實際上是給s的元素賦值。即 計算機先分配乙個空間,把空間的位址初始化給s,此時s已經是個字元指標常量了,以後不能給他賦值了。接著 實際上是給s這個陣列裡的元素賦值...

統計字串中最長單詞的長度!C語言

if str i a str i z 這句有點問題,z和a之間還有一些字元,應該排除掉 這個程式的主要問題是當讀到最後乙個字元null時,for迴圈退出,這時,count的值對應最後乙個單詞,而這時這個單詞的長度沒有進入for中的else進行比較,從而max的值會不對.所以你再在for後面加幾句 比...