![](/img/trans.png)
[英]In Lua, how should I handle a zero-based array index which comes from C?
[英]What happens if i don't use zero-based array in C
有人可以解釋會發生什么嗎? 是否真的有必要從索引0
而不是1
(這對我來說更容易)?
你可以做任何你想做的事情,只要你的數組下標嚴格小於數組的大小。
例子:
int a[100];
a[1] = 2; // fine, 1 < 100
如果我不在 C 中使用從零開始的數組會發生什么
嗯,你不能。 根據定義, C
數組是基於零的標准。
真的有必要從0開始嗎?
好吧,這不是阻止您將索引0
保留為未使用的規則,但是,您幾乎肯定不會得到所需的結果。
在C
使用基於非零的數組是可能的,但不推薦。 下面是如何分配一個基於 1 的 100 個整數數組:
int * a = ((int*)malloc(100*sizeof(int)))-1;
-1
將指針的開頭從數組的開頭移回一個,使第一個有效索引為 1。因此該數組將具有從 1 到 100 的有效索引。
a[1] = 10; /* Fine */
a[100] = 7; /* Also fine */
a[0] = 5; /* Error */
不推薦這樣做的原因是C
其他所有內容都假定指向內存塊的指針指向第一個感興趣的元素,而不是之前的元素。 例如,上面的數組將無法與memcpy
除非您在每次傳入指針時向指針添加 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.