谁能帮我详细解释下C语言中的实参和形参,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能帮我详细解释下C语言中的实参和形参,谢谢相关的知识,希望对你有一定的参考价值。

  在c中由于函数的调用就伴随着接口的问题。
  一个函数就是用来实现一个功能的,
  如:
  #include<stdio.h>

  int add(int a,int b)//把两个数相加
  
  int c;
  c=a+b;
  return c;
  
  int main()
  
  int num1;
  int num2;
  printf("输入两个数:\n");
  scanf("%d,%d",&a,&b);
  printf("%d",add(num1,num2));
  return 0;
  
  它相当于一个处理数据的机器,而数据就是原材料,这就需要一个材料的输入口,就是函数设计的接口,在这个过程中我们首先定义了一个函数add(int a,int b)(制造了一台机器),在定义这个函数的时候由于我们只是赋予它这个使两个数相加的功能,但是定不知道它将把那两个数相加,所以就先给它设定是对a,b相加,(就像我们只是造了机器,知道它的作用而没有原料)这时的a,b就是形参,即它只是一个形式上的数据,是定义在函数中的。
  而实参就是在调用函数的时候要向形参传递值,如num1,num2,(它就是机器要开工时需要的原料,有了它机器才能进行加工),我们实际上是要吧num1,num2相加,只是在主函数里写代码太繁杂,就把代码写到函数里边。这时形参a,b被赋予了num1,num2的值后就可以代替num1,num2在add函数体中完成本想对num1,num2进行的操作(至于为什么要用实参形参还涉及到数据的作用域的问题)
参考技术A 值传递:实参和形参传递的是数值 ,单向传递,结果不能传回主调函数.
地址传递:实参和形参传递的是地址值 ,双向传递,结果可以传回主调函数.
参考技术B 具体定义你可以查网上资料。
打一个比喻,
实参是实际参数,他真正参与了,函数内,改变他,那变量也变
而形参,只是形式似,只传递值,本身不会被变改变
参考技术C 怎么没东西?

1.实参和形参的关系 2.函数的参数可以是任意类型吗? 3.函数作用域的问题

1.实参和形参的关系

参数:定义函数的时候,小括号中的变量就是参数叫形参,在执行函数的时候小括号中的参数叫实参。
实参可带可不带,带了就相当于给形参赋值,没带就是undefined。
但是可以不带的实参,在定义函数的时候跟他对应的形参必须放在后面
形参的个数可以大于实参的个数,反过来不行。


2.函数的参数可以是任意类型吗?

函数的参数可以是任意类型

技术图片

 

 


3.函数作用域的问题

函数内部声明的变量都是私有变量。私有变量存到私有空间去。
什么是私有变量
函数中带var和function声明定义的变量是私有变量。
函数的形参也是私有变量。
如果函数中出现不带var和function的变量,向上级作用域查找,直到window下为止,有就看定义
了没有,定义了就使用,没定义就是undefined,没有就报错。

 

以上是关于谁能帮我详细解释下C语言中的实参和形参,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

调用函数时为啥形参的值不能传给实参

c语言中形参和实参的区别是啥?

在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决

《JS权威指南学习总结--8.3 函数的实参和形参》

形参的形参和实参的关系

1.实参和形参的关系 2.函数的参数可以是任意类型吗? 3.函数作用域的问题