陷阱31:不要使用数组名作为函数参数
- C语言中,我们可以使用数组来存储多个相同类型的数据,数组有一个名字,一个类型,一个长度,和一个元素列表,比如int arr[5] = {1, 2, 3, 4, 5};表示一个数组,它的名字是arr,它的类型是int,它的长度是5,它的元素列表是{1, 2, 3, 4, 5}。
- 但是,如果我们想要把数组作为函数的参数,就必须使用指针的方式,比如void print_array(int *p, int n);表示一个函数,它有两个参数,第一个参数是一个指向int类型的指针,第二个参数是一个int类型的变量,这样可以让我们通过指针来访问和修改数组的元素,实现数据的操作和传递。
- 有时候,我们会错误地使用数组名作为函数参数,比如用void print_array(int arr[5], int n);代替void print_array(int *p, int n);,这样会导致一些意想不到的结果,甚至引发错误。
错误的代码
void print_array(int arr[5], int n) //错误地使用数组名作为函数参数
for (int i = 0; i < n; i++) //遍历数组的元素
printf("%d ", arr[i]); //打印数组的元素
int arr[5] = {1, 2, 3, 4, 5}; //定义一个数组
print_array(arr, 5); //调用函数,