下面的例子将一个整数数组及其长度传递给函数,并打印其内容:
void displayArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d\n", arr[i]);
}
}
int vector[5] = {1, 2, 3, 4, 5};
displayArray(vector, 5);
这段代码的输出是数字1到5,我们给函数传递5来表明数组长度。也可以传递任意正数,不管这个长度是否正确,函数都会试图打印相应数量的元素。尝试越过数组边界寻址可能会导致程序终止。本例的内存分配如图4-8所示。
警告 为确定数组的元素数量对数组使用
sizeof
操作符是一种常见的错误,如下所示。4.1.1节中已经解释过了,这样获取长度是不对的。在这种情况下,我们给函数传递的是20。displayArray(arr, sizeof(arr));
还有一种情况比较常见:传递的元素数量比数组中实际的元素数量少,这样可以处理数组的一部分。比如说,假设我们读入一系列年龄并放进数组,但没有占满数组,此时如果调用sort
函数来排序,我们希望只对有效的年龄进行排序,而不是数组的所有元素。