C语言中一个指针当做形参会改变实参的内容吗
时间: 2023-12-01 19:02:15 浏览: 49
是的,当一个指针作为形参传递给一个函数时,函数内部对该指针的操作会改变实参的内容。这是因为指针实际上是传递了一个地址,函数内部可以通过该地址访问实参的内容并进行修改。因此,需要注意在函数内部修改指针所指向的内容是否符合实际需求,避免引起不必要的错误。如果不想改变实参的内容,可以使用 const 关键字修饰形参,使其成为只读变量,禁止在函数内部修改其值。
相关问题
二级指针作为形参为什么能改变实参的地址
二级指针作为形参能够改变实参的地址是因为它可以通过间接引用访问到实参指针的地址,从而修改实参指针所指向的地址。
在C语言中,函数参数传递是按值传递的,即函数接收到的是实参的副本。当我们使用一级指针作为形参时,实参的地址是以值的方式传递给形参,所以在函数内部修改形参指针的值不会影响到实参指针的地址。
而当我们使用二级指针作为形参时,函数接收到的是实参指针的地址的副本,在函数内部通过间接引用操作可以访问到实参指针的地址,从而修改实参指针所指向的地址。因此,通过二级指针作为形参可以改变实参的地址。
下面是一个示例代码,演示了使用二级指针作为形参改变实参地址的情况:
```c
#include <stdio.h>
void changePointer(int** ptr) {
int* newPtr = NULL;
*ptr = newPtr;
}
int main() {
int* ptr = malloc(sizeof(int));
*ptr = 10;
printf("Before change: %p\n", (void*)ptr);
changePointer(&ptr);
printf("After change: %p\n", (void*)ptr);
free(ptr);
return 0;
}
```
输出结果为:
```
Before change: 0x7ffeedc49d50
After change: (nil)
```
可以看到,通过传递二级指针作为形参,函数内部将实参指针的地址设置为NULL,从而改变了实参的地址。
c语言中为什么形参的改变不影响实参
在 C 语言中,形参和实参是两个不同的变量。当我们在函数调用时,实参的值会被复制到形参中,函数内部对形参的修改不会影响到实参的值。这是因为在 C 语言中,函数参数传递是按值传递的,也就是说实参的值会被复制到形参中,函数内部对形参的修改只会影响到形参本身,不会对实参造成影响。如果希望函数内部对实参的修改能够影响到实参本身,可以使用指针或引用类型的参数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)