函数(基本:参数,返回值)

函数参数传递:

A-函数的值传递:

void fun(int a,int b);//函数声明(函数原型)

就是实参赋值给形参,在函数处理中,实参本身是不受影响的。例:

实现两个数据交换:

void swap(int ,int );

void swap(int num1,int num2)
{
        int n1,n2,t;

        t =n1;
        n1 = n2;
        n2 = t;
}

原因:实参a,b传递给形参n1,n2的只是数值,而,a与n1根本就不是同一个地址空间,所以无论n1,n2如何操作,根本对a,b产生不了任何影响。

如果要解决这个问题,2种方式:

1、使用全局变量—— 不建议,因为函数尽量要模块化,尽量减少数据之间互相影响。(所谓的:高内聚,低耦合?)

2、地址传递(指针传递)——建议

只说2、地址传递:

B-函数地址传递:

 这样以来,直接把a,b的地址传递进来,进行操作;实质上就是对a,b本身进行操作(说的好像是屁话)。

附加:(为了安全起见,有些时候,我们传地址,也并不是为了修改原始数据,那么可以使用const 修饰一下,只读)

比如求字符串长度:

 函数的返回值

如上图,函数内求了字符串长度之后,我还需要把求得的值,传递到主函数去使用。两种方法:

1、使用全局变量——不建议

2、使用函数返回值

函数的返回值

 但是要注意:

我只是加了一句,打印返回的n的值,就报错?

 这是因为:函数中如果使用auto存储类型(默认不写),生命周期只存在于函数被调用期间(局部变量是放到栈上的),在函数执行完毕之后,就会释放,不能再被访问了,如果进行读写,就是非法。

而return n 之后,把函数直接赋值给变量却没问题,是因为:return的值,就是函数本身的返回值。

如果想打印出n的值,还是上面1所描述的方法:将n设置为全局变量——不建议。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值