C语言中调用函数的两种基础方式(详解)

一、前言

函数是构成c语言的基本单位,如何很好的定义并且引用c语言对于写好一个程序而言至关重要,作为新手刚入门的我们,最主要的就是掌握好两种c语言函数调用方式即可,分别是传值调用和引用调用。下面以具体的程序实例来解释两种调用方式的特点和不同。

二、传值调用

传值调用的特点就是他直接将实参(简单说就是我具体要操作的数值)的数据传递给形参(作为一个形式符号,在子函数中说明他将会进行什么操作)。传值调用的特殊性在于他的操作并不会对变量的值发生改变,也就是说操作完成后a还是a,b还是b。以交换两个数的程序为例。

void swap(int x, int y);  
#include <stdio.h> 
int main() {  
    /* 局部变量定义 */  
    int a = 100;  
    int b = 200;  
  
    printf("交换前,a 的值: %d\n", a);  
    printf("交换前,b 的值: %d\n", b);  
  
    /* 调用函数来交换值 */  
    swap(a, b);  
   printf("交换后,a 的值: %d\n", x);  
    printf("交换后,b 的值: %d\n", y);
      
  
    return 0;  
}  
  
void swap(int x, int y) {  
    int temp;  
    temp = x; /* 保存 x 的值 */  
    x = y;    /* 把 y 赋值给 x */  
    y = temp; /* 把 temp 赋值给 y */  
  
	return;  


}

在运行完这个程序过后我们会发现他的输出结果为:

从中我们可以发现传值调用并不会对变量本身产生改变,在这种情况下要想输出两个变量交换后的值,那么printf函数必须要放在子函数swap内,这样直接通过子函数输出,因为主函数中a,b未改变

 三、引用调用

引用调用,顾名思义就是直接引用变量进行操作,这一操作是通过函数的指针来实现的。通过指针传递变量的地址,可以直接对变量本身进行操作,这就是其和传值调用最大的不同。我们仍然是以交换两个数的程序为例

void swap(int *x, int *y)
{
   int temp;
   temp = *x;    /* 保存地址 x 的值 */
   *x = *y;      /* 把 y 赋值给 x */
   *y = temp;    /* 把 temp 赋值给 y */
  
   return;
}
#include <stdio.h>
 
/* 函数声明 */
void swap(int *x, int *y);
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
 
   printf("交换前,a 的值: %d\n", a );
   printf("交换前,b 的值: %d\n", b );
 
   /* 调用函数来交换值
    * &a 表示指向 a 的指针,即变量 a 的地址
    * &b 表示指向 b 的指针,即变量 b 的地址
   */
   swap(&a, &b);
 
   printf("交换后,a 的值: %d\n", a );
   printf("交换后,b 的值: %d\n", b );
 
   return 0;
}

此代码就是采用了引用调用的方法,他的运行结果如下:

 四、结语

以上就是两种函数调用的基本方法,他们各有特色,具体的需要在何处使用什么调用方式,仍然需要依据具体的情况来确定,希望大家多提宝贵意见,欢迎留言! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值