c语言中swap实参与形参,C语言形参与实参的概念及swap函数

形式参数和实际参数是编程中函数调用的关键概念。形式参数是在函数声明时使用的占位符,实际参数是在函数调用时传递给函数的值。在示例中,`n`是形式参数,`times`是实际参数。当函数被调用时,实际参数的值被复制给形式参数。如果尝试通过简单赋值在函数内部交换变量(如`swap`函数),由于复制的是值而不是引用,原始变量的值不会改变。要真正交换变量,需要传递变量的地址,以便函数能修改其内存位置的值。
摘要由CSDN通过智能技术生成

形式参数(formal argument)和实际参数(actual argument)是什么?

void function(int n); //n为形式参数

int main

{

int times=5;

function(times); //times为实际参数

}

void function(int n)

{

for(int i=0;i

printf("hello\n");

}

在声明一个参数时就创建了一个叫形式参数的变量,在上面的例子中形式参数是叫做n的变量。

函数调用function(times)把times的值5赋给了n,times被称为实际参数,也就是说main()中的变量times的值被复制给了function()中的新变量n。

在形参与实参传递的概念中有个很经典的例子,就是用一个函数交互两个变量的值

#include

void swap(int a1, int b1);

int main()

{

int a=0,b=1;

swap(a,b);

printf("a=%d , b= %d",a,b);

}

void swap(int a1, int b1)    //无效的交互函数

{

int temp=a1;

a1=b1;

b1=temp;

}

初学的时候很容易写出上面的代码,但是没有达到交换的目的,原因是这里交换的只是函数中形式参数的值,实参只是把它的值复制给了形式参数,当函数作用完成后,函数中的参数也随之销毁了,如例子中想交换main中a,b的值,把它们的值分别复制给了swap函数中的a1,b1,然后在函数中a1和b1的值确实是交换了,但是随之它们就销毁了,main中的a,b的值还是原来的值。

想要交换a,b的值,其实就是相当于要在函数中改变变量的值,要做到这一点,就需要向形式参数传递实际参数的地址了,因为这样把变量的地址复制到函数中的变量里,它们指向的是内存中的同一个地方,在函数中改变这个地方的值,那么外部的变量的值也就改变了。

下面的代码可以到达交换目的

#include

void swap(int * a1, int * b1);

int main()

{

int a=0,b=1;

swap(&a , &b);  //传递的是实参的地址

printf("a=%d , b= %d\n",a,b);

}

void swap(int * a1, int * b1)

{

int temp = *a1;

*a1 = *b1;

*b1 = temp;

}

0b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值