【发布时间】:2019-11-19 10:21:23
【问题描述】:
我在C程序的main方法中声明并初始化了一个数组,并定义了一个打印数组元素的方法,但是它打印了一些垃圾值而不是实际值。
我尝试了以下代码。
#include <stdio.h>
void arraySize(int arr[]);
int main() {
int array[] = {15, 50, 34, 20, 10, 79, 100};
arraySize(array);
return 0;
}
void arraySize(int arr[]) {
int i = 0;
while(arr[i]) {
printf("The value of arr[%d] is %d \n", i, arr[i]);
i++;
}
}
我得到以下输出
The value of arr[1] is 50
The value of arr[2] is 34
The value of arr[3] is 20
The value of arr[4] is 10
The value of arr[5] is 79
The value of arr[6] is 100
The value of arr[7] is 3538944
The value of arr[8] is 28
The value of arr[9] is 6422300
The value of arr[10] is 3538944
The value of arr[11] is 6422368
The value of arr[12] is 4198966
The value of arr[13] is 1
The value of arr[14] is 8263032
The value of arr[15] is 8266360
The value of arr[16] is 2
The value of arr[17] is 0
请帮助我如何使用 while 循环打印数组值并在到达记录结尾时终止循环。
【问题讨论】:
-
您正在阅读超出数组末尾的内容。这会导致“未定义的行为”(谷歌该术语)。
-
数组不会神奇地以 NULL 或 0 结尾。您需要在数组末尾显式添加这样的值,或者将数组大小传递给函数。
-
编译器如何知道传递的
array的大小?使用sizeof单独传递它然后使用它。 -
@B.Balamanigandan 您更改了代码。 Previously 你在
printf之前有i++。这将导致数组中的第一个元素无法完全按照您显示的那样打印。我怀疑您更改代码后没有更新输出。 -
@B.Balamanigandan 您的输出与程序不匹配。请在此处发布您的下一个问题之前阅读此内容:How to Ask。