【发布时间】:2010-11-30 21:43:20
【问题描述】:
我正在尝试打印出数组中的所有元素:
int numbers[100] = {10, 9, 0, 3, 4};
printArray(numbers);
使用此功能:
void printArray(int array[]) {
int i=0;
while(array[i]!='\0') {
printf("%d ", array[i]);
i++;
}
printf("\n");
}
问题是当然 C 不会区分数组中的另一个零元素和数组的末尾,之后它都是 0(也表示为 \0)。
我知道 0 和 \0 在语法上没有区别,所以我正在寻找一种方法或 hack 来实现这一点:
10 9 0 3 4
而不是这个
10 9
数组也可以如下所示:{0, 0, 0, 0} 所以当然输出仍然需要为 0 0 0 0。
有什么想法吗?
【问题讨论】:
-
感谢我看到它并投票决定关闭它,我对此有点小窍门。
-
一般情况下,在字符上下文中使用
'\0'来引用空值,在整数上下文中使用0。编译器对它们的处理方式几乎相同,但对于阅读您的代码的程序员来说具有不同的含义。看到将int i与'\0'进行比较的代码会在我的脑海中触发警告。分配*str = 0而不是*str = '\0'也是如此。