C 语言 传值方式调用函数

返回上一级

传值调用 就是把参数的实际值复制给函数的形式传递参数。在这种情况下,修改函数内的形式参数不会影响实际参数。

默认情况下,C 语言使用 传值调用 方法来传递参数。

一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。

我们先定义一个 swap 函数。

/**
 * swap 函数用来交换两个变量的值
 */

void swap(int a, int b)
{
   int temp;

   printf("在 swap 中,交换前的变量为 a=%2d, b=%2d\n", a, b );

   temp = a; /* 保存 a 的值 */
   a = b;    /* 把 b 赋值给 a */
   b = temp; /* 把 temp 赋值给 a */

   printf("在 swap 中,交换后的变量为 a=%2d, b=%2d\n", a, b );

   return;
}

接下来,让我们通过传递实际参数来调用函数 swap()

int main ()
{
   //定义两个整形变量 a, b 
   /* 局部变量定义 */
   int a = 7;
   int b = 17;

   printf("交换前的变量为 a=%2d, b=%2d\n", a, b);

   /* 调用函数来交换值 */
   swap(a, b);

   printf("交换后的变量为 a=%2d, b=%2d\n", a, b);

   return 0;
}

全部代码如下

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */

#include <stdio.h>

/* swap 函数声明 */

void swap(int x, int y);

int main ()
{
   //定义两个整形变量 a, b 
   /* 局部变量定义 */
   int a = 7;
   int b = 17;

   printf("交换前的变量为 a=%2d, b=%2d\n", a, b);

   /* 调用函数来交换值 */
   swap(a, b);

   printf("交换后的变量为 a=%2d, b=%2d\n", a, b);

   return 0;
}


/**
 * swap 函数用来交换两个变量的值
 */

void swap(int a, int b)
{
   int temp;

   printf("在 swap 中,交换前的变量为 a=%2d, b=%2d\n", a, b );

   temp = a; /* 保存 a 的值 */
   a = b;    /* 把 b 赋值给 a */
   b = temp; /* 把 temp 赋值给 a */

   printf("在 swap 中,交换后的变量为 a=%2d, b=%2d\n", a, b );

   return;
}

编译和运行上面的代码,输出结果如下:

$ gcc main.c && a.out
交换前的变量为 a= 7, b=17
在 swap 中,交换前的变量为 a= 7, b=17
在 swap 中,交换后的变量为 a=17, b= 7
交换后的变量为 a= 7, b=17

我们看到即使 swap 函数内部改变了 ab 的值,但是实际上 a 和 b 的值没有发生变化。

返回上一级

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.