[C/C++语言]函数以及函数参数的使用注意事项 按值传递 按地址传递

01函数的使用注意事项

  1. C程序是由多个函数构成的。

C程序可由多个文件组成,文件负责组织存放若干个函数。

  1. 源程序文件为C程序的编译单位,

    每个文件单独编译,便于调试。

  2. main函数是程序执行的入口,

    main函数可以调用其他函数,

    其他函数调用结束后,还要返回main函数,

    main函数执行完毕,整个程序就结束了。

  3. main函数可以出现在任何位置,

    但每个程序有且仅有一个main( )函数。

  4. C程序的所有函数都是平行定义的,

    在一个函数内部不允许定义另外的函数。

    函数可以互相调用,但是不能调用main函数。

函数的分类

无参函数

有参函数

形参:在函数定义及函数说明时都有参数,称形式参数。

实参: 在函数调用时也必须给出参数,称为实际参数。

进行函数调用时,主调函数将把实参的值传送给形参.

02函数参数的注意事项

参数:

通过形式参数和实际参数

函数传递参数机制–按值传递

关于形参与实参的说明:

  1. 实参可以是常量、变量或表达式,

    在调用时将实参的值赋给形参。

  2. 实参与形参的类型应相同或赋值兼容。

  3. 形参变量只有在被调用时才分配内存单元,

    在调用结束时, 即刻释放所分配的内存单元。

    形参只有在函数内部有效。

    函数调用结束返回主调函数后则不能再使用该形参变量。

  4. 实参向形参的数据传递是单向“值传递”

    只能把实参的值传送给形参,

    不能把形参的值反向地传送给实参。

    在函数调用过程中形参的值发生改变,实参的值不会变化。

数组元素作为函数参数-按值/地址传递

数组元素作为函数参数-按值传递
数组元素作为函数实参和一个普通变量用法相同
函数调用时值传送是把实参变量的值赋予形参变量

数组名作为函数参数-按地址传递
数组名实际上是一个常量地址,当用数组名作为实参时,实际上是把该常量地址传给形参。
形参数组并不分配接收实参数组元素的数据空间,只是分配一个接收常量地址 .

数组元素作为函数参数-按值传递

如int a[10]; 用a[3]之类做函数参数,这相当于将a[3]的值拷贝一份传入函数中,与普通按值传递效果一样。

数组名作为函数参数-按地址传递

相当于传入数组的首地址,然后函数用指针形参来接受,通过指针来访问相应的地址,直接改变的是原来实参的数组元素。

同时因为传入是数组的地址即指针,所以函数中形参是指针,所占空间的大小只是一个指针的大小,在函数中也无法确定数组的长度(一般再传入一个变量来表示他的大小)。

通常为了能够让函数处理不同长度的数组,函数的参数表应指定接收数组名及数组大小。

一维形参数组可以省略维数(因为函数中只是数组的地址,所以数组的大小对其开辟空间之类的没有影响,不管维数写多少都没有作用),但是不能省略[ ] !(为了表示他是一个数组)

多维数组也可以作为函数的参数。

此时按照地址传递时,二维数组的行数可以省略,而列数不能省略。int a[][10];这样做函数的参数,相当于一个指向一维数组(十个元素的数组)的指针。如果省略列数就不知道指向的数组是几个元素了。

ps:另外公众号(同年新月)开了一个月了才刚刚过百的同年关注我,真是让我好伤心啊…求同年们给自己的小伙伴分享一下啊,一起来努力呀!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值