作为函数参数的指针
假如我有一个神奇的能力,能改变我所获得的工资,我想让它是多少就是多少,我们先来判断下面的这部分函数是可用的吗?
oid salary(int money)
{
if(money < 20000)
money = 20000;
}
显然这样是不行的,函数的形参无论怎样修改,都是临时赋值的值,并不会反映到主调函数的实参中,,如果不能直接修改,就可以通过指针间接修改,如下:
#include<stdio.h>
/*让我的工资不到2万达到2万*/
void salary(int *money)
{
if(*money < 20000)
*money = 20000;
}
int main()
{
int wage = 9999;
salary(&wage);
printf("我的工资变为:%d。", wage);
return 0;
}
下面我们来分析下程序:
通过调用函数表达式salary(&wage)调用函数的情况如下图:
在salary函数中,形参money被声明为“指向int型变量的指针变量”,函数被调用时将&wage(216号)复制到money,即money指向了wage。
由于在指针前加上了指针运算符*,就可以显示该指针指向的对象,因此*money就是wage的别名。
综上所述,要想在函数中修改变量的值,就需要传入指向改变量的指针,告诉程序:传入的是指针,请对该指针指向的对象进行处理!
只要在被调用的函数里的指针写上指针运算符*,就能间接的处理该指针指向的对象,这也是*运算符也称为间接访问运算符的原因,通过在指针前写上指针运算符*访问该指针指向的对象,称为解引用(dereference)
————————————————
版权声明:本文为CSDN博主「学海无涯.苦作舟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W06164932/article/details/135271072