C程序设计语言 1.8 参数--传值调用

在C语言中,所有参数都是通过值传递的,也就是说,传递给被调函数的参数值存放在临时变量中,而不是存放在原来的变量中。被调函数不能直接修改主调函数中变量的值,而只能修改其私有的临时副本的值。
传值调用利大于弊,在被调函数中,参数可以看做便于初始化的局部变量,因此额外使用的变量更少,这样程序可以更紧凑

/* power: raise base to nth
power; n >= 0; version 2 */
int power(int base, int n)
{
  int p;
  for (p = 1; n > 0; n)
    p = p * base;
  return p;
}

其中,参数n用作临时变量,并在for循环中递减,这样就不需要引入额外的变量,而且在power函数中的操作不会影响到调用函数的原始值。
必要时,也可以让函数能够修改主调函数中的变量,调用者需要向被调函数提供带设置的变量地址,而被调函数则需要将对应的参数声明为指针类型,并通过它间接访问变量。我们将在第五章讨论指针。
如果参数是数组,把数组名当做参数时,传递给函数的值是数组的起始元素的位置或地址---它并不复制数组元素本。在被调函数中,可以通过数组下标访问或修改数组元素的值。下一节讨论。

推荐阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 3,667评论 1 19
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 2,717评论 3 44
  • 1、c语言的函数有以下特点: (1)才源程序由函数组成,一个主函数main()+若干其他函数 C程序中的函数类似文...
    滕王阁序阅读 724评论 0 6
  • 在简书偶然看到这个活动,其实自己刚用简书没多久,还比较纠结是否带图参加。但是想到自己的名字都是‘程序媛’了,必须要...
    rolian_插花的程序媛阅读 785评论 5 9
  • 对于一个View 或是 ViewGroup,当我们希望获取它的视图(Bitmap),常用的方法如下: Drawin...
    andChen阅读 6,798评论 6 5