1樓:匿名使用者
因為存在記憶體對齊問題,實際x和y的儲存空間可能都不是1個位元組(也許是4個)。char a[5],一般也可能是8個。
你用scanf可以輸入很多,但是棧越界了是肯定的,越界一點會沖掉a[5]後面的y 變數,越界過多就慘了。區域性的這幾個變數都在棧裡面,你用printf("%s\n",a) 是列印a指標開頭的字串,字串意思就是遇到'\0'才算結束,如果a[5]裡面沒有 0(也就是'\0')那當然就列印後a[5]之外了。屬於越界訪問。
不過讀一下不會造成程式崩潰
2樓:匿名使用者
變數的分配並不一定是連續的,char a[5]會分配5個連續位元組,但是
char x[5];
char y[5];
&y[0]並不一定等於&x[4]+1
3樓:匿名使用者
分配 一個 連續的佔5個位元組空間的地址。
輸出讀取多於5個後,正確輸出是因為在這5個空間後的地址是還沒有被分配的,一旦這些沒有被分配的地址被分配後,你讀入的這些資料將會被覆蓋,在那時候輸出,就會出錯了。
4樓:
這依賴於編譯器和作業系統,即使這樣在你使用的特定編譯器特定作業系統的那一次執行中能得到正確的結果,也不要這樣做。
你那樣定義的話,在一般的編譯器上地址會相差4的倍數,即差8。但能保證你能使用的就是5,用超過5是可能出錯的,但不保證出錯。
c語言問題 char[5]=「china」 它的字元長度是5還是6?所佔位元組是5還是6?
5樓:程式猿3號
你這樣寫,
在vc6中可能沒有錯,但是,vc6是很不標準的。。。
在vs2010中是肯定不能這麼寫的,因為越界了。
你必須這麼寫
char[6] = "china"
在記憶體中是這樣儲存的
c h i n a \0
最後一位要儲存\0;
它的字元長度是5,
佔用6個字元。
6樓:葉片舟
字元長度是5,不包括'\0',空字元
位元組大小就是陣列定義的大小
在你這個陣列中,所佔位元組也是5,因為,你陣列定義的就是這麼大,沒給空字元留空間
7樓:匿名使用者
char s[5],系統僅分配5個字元空間,用"china"來初始化這個字元陣列是有風險的,c語言規定,預留的空間必須考慮串結束符'\0',在vc++ 6.0環境下,編譯錯誤資訊是,error c2117: 'china' :
array bounds overflow,直譯是陣列邊界溢位,也就是說,初始化串太長,超出預留空間了。
8樓:匿名使用者
strlen未知
所佔位元組是5
在c語言中char a[]={'a','b','c'}和char a[]="abc"有什麼區別 它們各在記憶體裡佔多少和位元組
9樓:匿名使用者
char a= 這是一個字元陣列,佔3個位元組。 char a="abc" 則不同,它是一個字串,最後還有一個'\0'結束符,佔4個位元組
c語言中,char型別資料佔多少位元組?
10樓:胡說八道小鬼
char 1個位元組
16位編譯器
32位編譯器
64位編譯器
c語言中的char資料型別
c語言中的char資料型別是一種整數型別(integer type),它的大小被定義為1個byte。
亦即sizeof (char) ≡ 1
11樓:吉祥二進位制
可以使用sizeof運算子獲取資料型別佔多少位元組。一般char型別佔1個位元組。
#include
int main()
12樓:匿名使用者
佔一個位元組,即8位,可用兩位十六進位制數表示,比如0x7f
13樓:
不要過於在意這種型別大小問題,在不同的機器有些實現是不一樣的,針對性太強的移植性會比較差,用的時候用sizeof()之類的函式測一下就好了
14樓:杜茂彥
sizeof(char) 1個位元組
wchar 2個位元組,用來表達unicode的
c語言中char s="test";在記憶體中佔幾個位元組
15樓:鄲染娰女
這句**有誤,編譯會報錯。。。如果你想問的是"test"這個字串佔幾個位元組的話,它在記憶體中佔5個位元組的,但是它的長度是4
16樓:完顏玉英牛淑
你好!1,這個定義有問題,如果是一個字元應該是chars='a',如果是字串s應該是指標
2,指標佔4byte,test佔5byte僅代表個人觀點,不喜勿噴,謝謝。
mysql資料庫漢字到底佔幾個位元組
娛樂小八卦啊 一個漢字佔多少長度與編碼有關 若採用utf 8編碼,則一個漢字 3個位元組。若採用gbk編碼,則一個漢字 2個位元組。專案中oracle10g資料庫表欄位為varchar n 型別,存英文很簡單,只要字母個數不大於n即可。但是對於漢字,按照同樣的方法就不行了。因為對於漢字不同的字符集,...
char a這個定義是說a的裡邊為空字元?但給他賦值時候,它最大的能存多少為呢
char a 這個是初始化字元陣列,大小隻有1個元素。所以佔用記憶體為1個位元組。陣列裡只有一個元素。所以賦值時只能a 0 x 型別 陣列名 這是一個一維陣列 有多少個就是幾維陣列 通常 char a a char型別只能有一個字元但是char a aaaaa 或char a 是一樣的char a的...
房屋實際使用面積大概佔比是多少,房屋實際使用面積大概佔比是多少?
還讓不讓改了 可別這麼想,任何個人測量的結果都不準,都是無效的,打官司都贏不了。房屋測繪是由國家認可的測繪機構來完成的,不光是室內的地毯面積,還包括牆體面積,公攤面積等等。你別被他誤導了。反正已經買了,都裝修了,多一點少一點又有什麼呢? 高層住宅一般公攤在25 左右,但是具體的戶型不一樣還是要自己仔...