在c语言中形参与实参,c语言规定实参和形参

  在c语言中形参与实参,c语言规定实参和形参

  对于带参数的函数,我们需要在函数定义中指定参数的个数以及每个参数的类型。定义参数就像定义变量一样,所以我们需要指定每个参数的类型,并根据标识符命名规则来命名。例如:

  # include stdio . h void print _ time(in hour,intminute,intsecond){ printf(%d:%d:%d\n ,小时,分钟,秒);} int main(void){ print_time(12,10,31);系统(“暂停”);return0}

  运行结果:

  需要注意的是,定义变量时可以将同类型的变量列在一起,但不能定义参数。例如,下面的定义是错误的:

  void print _ time(in hour,minute,second){ printf(%d:%d:%d\n ,小时,分钟,秒);}

  当我们调用print_time(12,10,31)时,函数中的参数小时代表12,参数分钟代表10,参数秒代表31。具体来说,当我们讨论函数中的参数hour时,“参数”指的是形式参数,而当我们讨论将参数12传递给函数时,“参数”指的是实际参数。

  那么如何区分形参和实参呢?我们只需要遵循这个原则:一个参数等价于一个函数中定义的变量,调用函数传递参数的过程等价于定义一个参数变量并用一个实参的值初始化它。换句话说,形参出现在函数定义中,可以在整个函数体中使用,但不能在没有函数的情况下使用。

  参数出现在主调优函数中,进入调优函数后不能使用参数变量。形式参数和实际参数的作用是传递数据。调用函数时,调用函数将实参的值传递给被调用函数的形参,从而实现从调用函数到被调用函数的数据传递。

  形式参数和实际参数的特征:

  1.参数变量只在被调用时分配内存单元,被分配的内存单元在调用结束时立即被释放。因此,形参只在函数内部有效。函数调用结束,返回主音函数后,就不能使用这个参数变量了。

  2.参数可以是常量、变量、表达式、函数等。无论是什么类型的量,在进行函数调用时都必须有一定的值,这样这些值才能传递给形参。所以要用赋值,输入等。来得到参数的确定值。

  3.实参和形参在数量、类型、顺序上要严格一致,否则会出现“类型不匹配”的错误。

  4.函数调用中的数据传输是单向的。也就是说,只能将参数的值传递给参数,而不能反向传递参数。因此,在函数调用过程中,形参的值会发生变化,但实参的值不会发生变化。

  5.当形参和实参不是指针类型时,函数运行时,形参和实参是不同的变量,它们在内存中的位置不同。参数复制实参的内容,在函数结束时释放参数,但实参的内容不会改变。如果函数的形参是指针类型变量,那么在调用函数的过程中,将实参的地址传递给函数,在函数体内部使用实参的地址,也就是使用实参本身。所以参数的值可以在函数体内改变。

  下面的代码说明了这个问题。

  #include stdio.h void函数(intn){ inti;for(I=n-1;I I-)n=n I;Printf(在调用函数的过程中(int n),n=%d\n ,n);} int main(void){ intn;Printf(请输入一个数字:\ n );scanf(%d ,函数(n);Printf(调用函数(int n)后,n=%d\n ,n);系统(“暂停”);return0}

  运行结果是:

  程序中定义了一个函数S。这个函数的作用是求从1到n的累计和,在主函数中输入n的值,作为实参,调用时传递给S函数的形状参数n。请注意,本例中的参数变量和自变量变量的标识符都是N,但这是两个不同范围的不同量。在main函数中,使用printf语句输出一次n的值,也就是自变量n的值,在函数s中,也使用printf语句输出一次n的值,并且这个n的值为0,n的值最终由参数得到。从运行情况来看,输入n的值是123。也就是说,参数n的值是123。当这个值传递给函数s时,参数n的初始值也是123,在函数执行过程中,参数n的值变成7626。主函数返回后,输出参数n的值仍然是123。可以看出,自变量的值并不随着参数的变化而变化。

  实际参数和形式参数的区别

  1.函数的形参在函数声明中列出,并在函数定义的函数体中使用。调用函数时,任何类型的参数都是要填充的空白或占位符。

  2.实参用于填充形参。当调用一个函数时,参数在函数名后面的括号中列出。当执行函数调用时,实参被传递给形参。

  3.按值调用和按引用调用指的是在参数传递过程中使用的一种机制。在按值调用中,只使用参数的值。在值调用机制中,参数是一个局部变量,它的初始值是对应实参的值。在引用调用机制中,参数的地址被传递给形参。从表面上看,参数被实参变量所替代,因此在参数中发生的任何变化实际上都发生在实参变量中。

  例如,下面的例子:

  # include stdio . h void increment(intx){ x=x ^ 1;} int main(void){ inti=1,j=2;增量(一);增量(j);printf(i=%d,j=%d \n ,I,j);系统(“暂停”);return0}

  执行结果:

  函数的返回值

  函数的值(或函数的返回值)是指在函数体中执行程序段得到的,在函数被调用后返回给调用函数的值。比如调用正弦函数获取正弦值,求一个浮点数的平方根等。关于函数值有一些解释:

  1.函数的值只能通过return语句返回给主音函数。return语句的一般形式是:

  返回表达式;

  或者:

  回归(表情);

  该语句的作用是计算表达式的值,并将其返回给主音调函数。一个函数中允许有多个return语句,但是每次调用只能执行一个return语句,所以只能返回一个函数值。

  2.函数值的类型应该与函数定义中函数的类型一致。如果两者不一致,以函数类型为准,自动进行类型转换。

  3)如果函数值是整数,定义函数时可以省略类型描述。

  4.不返回函数值的函数可以明确定义为“空类型”,类型说明符为“void”。一旦函数被定义为空类型,被调优函数的函数值就不能在调优函数中使用。例如,我们定义一个空类型的函数。

  test(int i){ printf(i=%d \n ,I);}

  在main函数中编写以下语句

  sum=test(n);

  是错误的。

  为了使程序可读并减少错误,任何不需要返回值的函数都应该定义为空类型。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: