面试题答案
一键面试-
arr
在函数内部实际是什么:- 在函数
void func(int arr[])
中,当传递一维数组int a[10]
给这个函数时,arr
实际上是一个指针,确切地说是指向数组a
首元素的指针,其类型为int *
。在C语言中,数组名在作为函数参数传递时,会自动退化为指针。
- 在函数
-
函数内部对
arr
的操作和对原数组a
的影响:- 由于
arr
是指向原数组a
首元素的指针,所以对arr
所指向内容的修改,会直接影响原数组a
。例如,如果在函数内部通过arr
改变某个元素的值,原数组a
中对应位置的元素值也会改变。 - 但是,对
arr
指针本身的操作(比如重新赋值使其指向其他地方),不会改变原数组a
的地址。
- 由于
-
举例说明:
#include <stdio.h>
void func(int arr[]) {
// 修改数组第一个元素的值
arr[0] = 100;
// 这里arr是指针,也可以通过指针运算来修改
*(arr + 1) = 200;
}
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
func(a);
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
return 0;
}
在上述代码中,func
函数接收数组a
并修改了其前两个元素的值。在main
函数中调用func(a)
后,原数组a
的前两个元素分别变为100和200 。