用指针方式实现实参随形参发生改变。
Posted 两片空白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用指针方式实现实参随形参发生改变。相关的知识,希望对你有一定的参考价值。
一:形参和实参
1.什么是形参和实参。
当调用一个函数时,可以不向函数传入参数或者向函数里传入参数。当向函数里传入参数时,调用函数时传入的参数为实参,在函数里传入的参数为形参。
int met(int b){
b++;
return 0;
}
int main(){
int a = 1;
met(a);
return 0;
}
例如上述程序,main函数里的a为实参,函数met里的b为形参。
2.为什么当形参改变时实参不会改变
当函数调用时,形参用来接收实参,相当于实参的拷贝,然后在计算机内存中分配地址。实际上形参的地址与实参的地址不相同,如下。所以当形参发生改变时,实参并不会发生改变。
二:如何实现
当我们调用函数时,当我们用函数的方法写代码,例如比大小,做加减等代码时,当我们调用的函数中的形参发生变化时,函数中的实参并未发生变化,那如何实现形参发生变化,实参也发生变化呢?
用指针来实现。
例如:
#include<stdio.h>
int met(int *b){
(*b)++;
return 0;
}
int main(){
int a = 1;
printf("%d\\n", a);
met(&a);
printf("%d\\n", a);
return 0;
}
输出
1
2
上述代码中&a代表a的地址,met()函数中int *b,b为指针变量,并且b=&a,*b=a,这里并不只是代表值相等,是b完全就是&a,*b完全就是a。
当向调用函数传入变量的地址,调用函数定义一个指针变量接受时,就实现了当形参发生变化时,实参也相应发生了变化。
注意点:在上述代码中必须是(*b)++,不能是*b++,指针做运算时最好加上()作为一个整体。
以上是关于用指针方式实现实参随形参发生改变。的主要内容,如果未能解决你的问题,请参考以下文章