加入收藏 | 设为首页 | 会员中心 | 我要投稿 临夏站长网 (https://www.0930zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C语言形参和实参的差异

发布时间:2022-07-01 11:24:58 所属栏目:语言 来源:互联网
导读:如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。 这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值。 C语言函数的参数会出现在两个地方,分别是函
  如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。
 
  这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值。
 
  C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。
  形参(形式参数)
  在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
  实参(实际参数)
  函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。
 
  形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。
  形参和实参的区别和联系
  1) 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。
 
  2) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。
 
  3) 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。
 
  4) 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。
 
  5) 形参和实参虽然可以同名,但它们之间是相互独立的,互不影响,因为实参在函数外部有效,而形参在函数内部有效。
 
  更改上面的代码,让实参和形参同名:
  #include <stdio.h>
  //计算从m加到n的值
  int sum(int m, int n) {
      int i;
      for (i = m + 1; i <= n; ++i) {
          m += i;
      }
      return m;
  }
  int main() {
      int m, n, total;
      printf("Input two numbers: ");
      scanf("%d %d", &m, &n);
      total = sum(m, n);
      printf("m=%d, n=%dn", m, n);
      printf("total=%dn", total);
      return 0;
  }
  运行结果:
  Input two numbers: 1 100
  m=1, n=100
  total=5050
 
  调用 sum() 函数后,函数内部的形参 m 的值已经发生了变化,而函数外部的实参 m 的值依然保持不变,可见它们是相互独立的两个变量,除了传递参数的一瞬间,其它时候是没有瓜葛的。

(编辑:临夏站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!