函数参数 传递指针类型的参数就一定是地址传参吗
函数参数传递指针类型的参数不一定是地址传参,还可以是复制传参。如果函数参数传递的是指针类型的参数,但是在函数内部并没有修改该指针所指向的内存地址的值,那么就是复制传参。只有在函数内部修改了该指针所指向的内存地址的值,才是地址传参。
举个例子,假设有以下代码:
void func(int *p) {
*p = 10;
}
int main() {
int a = 5;
func(&a);
printf(“%d”, a); // 输出:10
return 0;
}
在这个例子中,函数func的参数是指针类型的参数p,但是在函数内部修改了p所指向的内存地址的值,因此是地址传参。而在main函数中调用func时,传递的是变量a的地址,因此也是地址传参