我想知道int數組在c中對內存的影響。 例如我們打開字符數組char array[10];
它不會打開10它會打開11因爲'\0'
在int數組中有相同的情況嗎? 當我們聲明int abc[10];
它會打開數組是10 int size還是11像char? 謝謝...int數組在C/C++中
回答
我不知道你所說的「開」一個數組的意思。如果你聲明:
char array[10];
你定義10位數char
的數組。如果你聲明:
int array[10];
你定義10位數int
的數組。兩者都未初始化,除非定義爲 與靜態生命週期。
附加的'\0'
隻影響字符串文字和初始化 字符串。
你錯了,至於char array[10]
。這將不聲明 11層的元件,只有10,包括陣列終止'\0'
。這意味着如果你在數組中放置一個十個字符的字符串,它將會溢出。
some_type name[10]
將總是聲明10個元素,從未更多,更少從未的陣列。
如果在數組中放入*十個字符的字符串,它會溢出。 – 2012-03-12 14:43:12
@larsmans是的,謝謝。改變。 – 2012-03-12 14:44:44
我想聲明字符數組[10]究竟分配10個字節的空間,這是你的工作,如果你認爲合適的管理與「\ 0」的記憶。
例如我們開字符數組char數組[10];它不會打開10它會打開11因爲'\ 0'
錯誤。在C中,你需要照顧你的終止\0
的字符串 - 編譯器不會對你有任何幫助。如果您聲明char[10]
,您會得到10 char
s,對於int
s和所有其他類型也是如此。
字符數組[10] 將創建10個元件的陣列。我認爲你有點困惑,因爲在c中,通常你必須創建一個大小爲11的數組來存儲大小爲10的字,因爲最後需要爲'\ 0'字符添加一個額外的元素。但是你仍然必須聲明數組的大小爲11,而不是10。編譯器不會爲你做。
我想你大概用C初始化的char
陣列++有些困惑。 char array[10]
將有大小爲10,而不是11號,然而,char array[] = "1234567890";
會因爲初始化知道您的字符數組需要一個換行符結束有大小11。
int abc[10]
創建通過9.轉換類型(例如由10個整數的數組,其中下標0,char abc[10]
不改變數組中的項數。
隨着陣列炭,所述NUL終止符被認爲是字符串的一部分,所以如果你提供了一個初始化符並且指定了一個大小,那麼它的大小必須至少和字符串的大小一樣大,包括NUL終止符。如果你沒有指定大小,大小將會是包括NUL終止的字符串的長度。
char a[] = "A string"; // sizeof(a)==9
但是請注意,C是slightl Ÿ在這方面的不同 - 在C你可以指定一個初始化和大小,做不包括對NUL終止空間,它仍然編譯。
char a[9] = "A string"; // allowed in either C or C++
char a[8] = "A string"; // allowed in C, but not C++.
我一直使用char a [8] =「一個字符串」;就像那樣,因爲我開始C.那樣,新線a [8]是'\ 0'在哪裏? – user1030629 2012-03-12 19:01:59
@ user1030629:否 - 使用'char a [8]',有效的下標從[0]到[7]。你不能依賴包含任何特定值的[8]。在一個典型的情況下,它會引用內存中隨後發生的任何字節(有效部分)'a'。這可能是'\ 0',但也可能是別的。 – 2012-03-12 19:17:25
我看到謝謝,但我仍然困惑,我總是使用char a [8] =「一個字符串」;它從不crahed或無法找到上放的printf等空終結...... – user1030629 2012-03-12 19:33:03
- 1. 包含在int數組中
- 2. 查找(數組[INT],數組[INT])的RDD
- 3. 什麼是「var cc = cc = cc || {};」在Cocos2D中做什麼?
- 4. 如何比較int中的int數組
- 5. int中的int數組初始化
- 6. 複製存儲在虛數指針Int數組中的Int數組
- 7. 轉換int數組爲int
- 8. 2D數組中數組下標的無效類型'int [int]'
- 9. 空int數組
- 10. int數組vb.net
- 11. JButton數組到int數組
- 12. C++中的2D int數組
- 13. 在數組中間位置插入int
- 14. 在數組中搜索一個int
- 15. C#在字節數組中存儲int
- 16. 在JNI中獲取一個int數組
- 17. 在int數組中打印出位
- 18. 在Cython中訪問C-Int數組?
- 19. Char和Int在一個數組中
- 20. 如何在int數組中獲得R.id's?
- 21. C++在數組中找到一個int
- 22. 如何在android中清除int []數組?
- 23. 在C++中處理int數組
- 24. 在Java中比較6個int數組
- 25. 在xtend中聲明一個int數組
- 26. 如何在'int'數組中添加'nothing'C
- 27. 在int數組中存儲多個零
- 28. 如何在數組中使用int?
- 29. 在數組聲明中int [] k,i和int k [],i;
- 30. 如何在二維int數組中找到最常見的int?
你認爲'char array [10]'是什麼? – Saphrosit 2012-03-12 14:42:08
我的意思是聲明數組,例如我們聲明char x [10];看來x [10] ='c';我閱讀郵件後非法。我是不是很喜歡? – user1030629 2012-03-12 18:56:06