回答
這將創建32個字符的數組。第一個元素將是1,其餘元素將被設置爲零。
它是初始化。它將數組的第一個元素設置爲1
(在我檢查的ASCII表中爲^A
),其餘爲0
(默認值)。
爲了表述上省略初始化C99標準:
如果在一個大括號內的列表更少初始化值多於字面用於元件或聚集體的成員 ,或在一個字符串中更少的字符初始化一個已知大小的數組,比數組中的元素長,其餘的聚合應該是 隱式地初始化,就像具有靜態存儲持續時間的對象一樣。
和:
如果具有自動存儲持續時間的對象沒有被明確初始化, 它的值是不確定的。如果具有靜態存儲持續時間的對象是 沒有明確進行初始化,則:
- 如果它有指針類型,它被初始化爲空指針;
- 如果它有算術類型,它被初始化爲(正或無符號)零;
- 如果它是一個聚合,每個成員根據這些規則初始化(遞歸);
- 如果它是一個聯合,則根據這些 規則初始化(遞歸)第一個命名成員。
而且char
是算術式,所以陣列的其餘元件將被初始化到零。
是的,你記得沒錯。只是谷歌的 「C數組初始化」:
有兩點要注意:
在舊的,預ANSI C編譯器,你不能總是提供 函數內部「本地」數組的初始值設定項;你只能在 初始化「全局」數組,那些在任何函數之外的數組。那些 編譯器現在很少見,所以你不必再擔心這個區別。
當一個數組定義包括一個初始化中,陣列 尺寸可以被省略,並且編譯器會從初始化
的數量推斷尺寸 如果有初始化比數組中的元素較少,剩餘的 元素自動初始化爲0
如果不初始化數組自動(本地和非靜態)可言,EL數組的元素可能包含垃圾值。
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
char data[5];
for (i = 0; i < 5; i++) {
printf("data[%d] = %d\n", i, data[i]);
}
return 0;
}
輸出:
data[0] = 72
data[1] = 12
data[2] = -118
data[3] = 51
data[4] = -119
但是,如果你這樣做初始化它,它就會與你指定的初始化初始化。如果初始化符的數量小於所述陣列中的元件的總數目,剩餘的元件將被初始化爲0。
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
char data[5] = {1};
for (i = 0; i < 5; i++) {
printf("data[%d] = %d\n", i, data[i]);
}
return 0;
}
輸出:
data[0] = 1
data[1] = 0
data[2] = 0
data[3] = 0
data[4] = 0
您是否必須在自己的行上打印每個元素? – 2012-08-16 20:18:46
@ColinD不,但這有什麼區別? – 2012-08-16 20:19:43
它使你的答案不必要很長時間。足夠長,我必須滾動閱讀所有內容,但內容不夠有意義,無法滾動。 – 2012-08-16 20:21:52
- 1. C多維字符數組初始化
- 2. 的C#初始化字符串數組
- 3. C++ strlen()初始化字符數組
- 4. 用字節和字符串初始化C數組
- 5. C#初始化數組
- 6. C數組初始化
- 7. C++數組初始化
- 8. C++數組初始化
- 9. C++數組初始化
- 10. 數組c初始化
- 11. 初始化數組C++
- 12. C++數組初始化
- 13. c char字符數組v C案例的char *初始化
- 14. C++/Cli文字數組初始化
- 15. 初始化字符數組
- 16. 字符數組初始化
- 17. C/C++私有數組初始化
- 18. C/C++中的數組初始化
- 19. 初始化多朦字符串數組
- 20. 初始化整個字符數組
- 21. 字符串數組初始化
- 22. 如何初始化C#中的字符串數組列表?
- 23. 初始化字符串的靜態數組(C++)?
- 24. 機制初始化數組的一個字符串用C
- 25. 字符串數組的初始化C++中
- 26. 初始化字符串數組動態地使用C
- 27. 初始化動態字符串數組(C++)
- 28. 正在初始化C數組而不使用stange字符?
- 29. C:使用字符串數組初始化結構體
- 30. 如何初始化C字符串數組(不STL)
http://stackoverflow.com/問題/ 201101 /如何初始化數組in-c – chris 2012-08-16 20:14:26
問題的標題基本上是您的答案。 – netcoder 2012-08-16 20:14:31
http://en.wikipedia.org/wiki/C_syntax#Initialization – 2012-08-16 20:16:22