我有一個問題,以更好地理解數組和空字節如何工作在C中。C數組和空字節
比方說,我有一個13個單元格的int數組。 比方說,我希望細胞數量:1,2,3和10有一個值。其他剩下的默認值會自動獲取nullchar \ 0作爲值?
我對\ 0的理解是,nullbyte總是在數組的末尾,它的功能是告訴程序數組在哪裏結束。但似乎是錯誤的
我寫了一個簡單的PROG鍵確認,似乎是這樣的:
int nums[13] = {1,2,3};
nums[10] = 69;
int i;
for(i=0;i<13;i++) {
if(nums[i]=='\0') {
printf("null char found! in position: %d\n",i);
}
else {
printf("element: %d found in position: %d of int array\n",nums[i],i);
}
}
return 0;
這裏是輸出:
元素:1的位點發現:INT 0陣列
元件:2的位點發現:int數組的1
元件:3在位置上發現:int數組的2
發現空字符!在位置:3
找到空字符!在位置:4
找到空字符!在位置:5
找到空字符!在位置:6
找到空字符!在位置:7
找到空字符!在位置:8
找到空字符!在位置:9
元件:69在位置上發現:int數組的10
空焦炭找到!在位置:11
找到空字符!在位置:12
| 1 | | 2 | | 3 | | \ 0 | | \ 0 | | \ 0 | | \ 0 | | \ 0 | | \ 0 | | 69 | | \ 0 | | \ 0 | | \ 0 |
那麼爲什麼默認單元格設置爲\ 0值?而不是被留下空作爲例子?
空字符不應該只在整個數組的末尾一次? 謝謝
對於標量,靜態分配的內存填充0或對指針填充NULL(\ 0)。如果你把\ 0作爲標量,它將被轉換爲0.沒有「空」之類的東西。您不應該將NULL(\ 0)與int進行比較,而是使用文字0. – Tibrogargan
「我對\ 0的理解是,nullbyte總是在數組的末尾..」是完全錯誤的。您正在混淆常規數組和C字符串。 – usr2564301
@Tibrogargan'\ 0'(NUL字符)與'NULL'指針不同。 '\ 0'是一個所有位都設置爲0的字節,它總是與「int」0相等。 – Kninnug