C语言指针为什么C d 被改变了

2025-05-20 21:45:47
推荐回答(3个)
回答1:

*p表示指针p指向的数据,所以如果p指向a,那么修改*p的值自然也就是修改a的值。

回答2:

回答3:

在C语言里,基本变量存放的是数据,而指针变量是存放地址的变量(另一变量额地址)。在C语言中,指针也称之为地址,所以我们常说某某变量的指针,可以理解为某某变量的在内存中的地址。如:b变量的指针是1000,可以理解为b在内存中的地址是1000,注意不能理解为b的指针变量是1000(错误的理解)。

2、定义指针变量

在c语言指针的定义形式如下:

类型说明符*指针变量名

如:

int*p1,*p2;

//错误的定义方式

int*p1,p2;//p1整形指针,p2是整形变量

在c里,可以在变量前加&符号取得变量的地址,同样地,可以在指针变量前加*符号取得指针变量指向的变量的值(该内存地址上存放的数据),如:

int a=4;

int*p=&a;

printf("指针p指向的变量的值是%d\r\n",*p);//注意在这行代码里,p是指针,*p是指向的变量的值。

3、指针变量作为函数参数

//带有指针变量的函数定义形式如下

void fun(int*p1,int*p2)

//调用方式如

注:在被调用函数中,试图修改指针变量的值(即地址)来达到改变实参的目的都是错误的。

这句话如何理解呢?这里牵涉到一个比较容易混淆的问题-值传递和引用传递的区别。在这里提供一种理解方式,如下:将实参传给形参的时候,形参都是将实参的内容复制一遍,再调用相对应的函m