C语言·自定义函数·传递参数 您所在的位置:网站首页 自定义输入函数c C语言·自定义函数·传递参数

C语言·自定义函数·传递参数

2023-06-18 19:29| 来源: 网络整理| 查看: 265

C语言中自定义函数时,值传递是单向的,由实参传递给形参

无论对形参做什么运算,都不会改变实参的值

但是,若想要利用自定义函数来改变实参的值,可以利用指针传递

举个栗子:

#include void exch(); int main() { //简单地做了个交换两个数字的程序 int a,b; scanf("%d %d",&a,&b); //输入a、b的值 printf("\n\noriginal_a=%d\noriginal_b=%d\n\n",a,b); //输出a、b原始的值 exch(a,b); //调用函数,在函数内交换两个数字,这里传递的a、b的值是实参 printf("\n\nnew_a2=%d\nnew_b=%d\n\n",a,b); //输出经函数运算后的a、b的值 return 0; } void exch(int excha,int exchb) //可以看到,这里定义的是两个整型的临时变量 { int exchc; exchc=excha; excha=exchb; exchb=exchc; printf("\n\nexcha=%d\nexchb=%d\n\n",excha,exchb); //输出函数运行后的结果,即交换后的a、b }

运行结果如下:

可以看到,实参a、b的值并没有被改变

  指针传递

指针传递中,函数的形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行操作

当实参传递的是指针(即地址)时,在自定义函数的内部,可以对该地址中的内容进行运算

但是注意,实际上,实参(即指针)并没有改变,只是利用指针改变了指针指向的内容

所以,“无论对形参做什么运算,都不会改变实参的值”依然成立

再举个栗子:

#include void exch(); int main() { int a,b; scanf("%d %d",&a,&b); printf("\n\noriginal_a=%d\noriginal_b=%d\n\n",a,b); exch(&a,&b); //调用函数,注意,这里传递的实参是a、b的指针,利用了取地址运算符 & printf("\n\nnew_a2=%d\nnew_b=%d\n\n",a,b); return 0; } void exch(int *excha,int *exchb) //这里定义的形参是指针变量,用于接收实参传过来的指针 { //此时形参的值是实参的指针,通过间接寻址运算符 * ,就可以实现对a、b的值进行运算 int exchc; //我们传递的值是实参的指针,但是进行运算的是指针指向的内容 exchc=*excha; *excha=*exchb; *exchb=exchc; printf("\n\nexcha=%d\nexchb=%d\n\n",*excha,*exchb); //输出指针指向的内容 }

运算结果如下:

可以看到,经过函数的运算之后,实参指针指向的内容被改变了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有