【发布时间】:2021-05-02 08:40:57
【问题描述】:
由于在 C 中必须在定义数组时说明数组长度,因此使用第一个元素作为长度是否可以接受,例如
int arr[9]={9,0,1,2,3,4,5,6,7};
然后使用这样的函数来处理数组:
int printarr(int *ARR) {
for (int i=1; i<ARR[0]; i++) {
printf("%d ", ARR[i]);
}
}
我认为这没有问题,但更愿意先咨询有经验的 C 程序员。我将是唯一使用该代码的人。
【问题讨论】:
-
TLDR:不。如果数组的类型不是数字怎么办?
-
这真的取决于情况。很难做出笼统的陈述。如果您编写这样的代码,至少应该在 cmets 中正确记录。
-
如果数组是一个固定大小的数组,就像你的例子一样,你可以简单地这样做:
#define MYSIZE 9然后int arr[MYSIZE]={0,1,2,3,4,5,6,7};。现在您知道大小是MYSIZE。否则,固定大小数组的大小始终为sizeof(array) / sizeof(array[0])。有些实现有_countofmacro,如果没有,你可以根据上面的方法自己做。 -
我喜欢这个问题。这是一个坏主意,但却是个好问题。
-
非常感谢所有优秀的 cmets 和建议。我现在将使用数组、长度和附加描述所推荐的结构。我想我倾向于通过在数组中包含元数据来使用 C 的俚语版本。
标签: arrays c definition function-declaration