C语言数组作为函数参数及保护数组内容

    C语言函数的参数传递主要有两种,一种为值传递,可以了理解为传递了一个副本,传递之后副本无论如何改变均不会影响到原来的变量,安全性高,但是子函数只能通过return来实现与原函数的通信;另一种为地址传递,包括数组名作为函数参量和指针变量作为函数参量

    注:其实编译器会把数组名作为指针变量进行处理,只是数组名是个指针常量,不能改变数组名的值,如ar【】,ar是一个数组名,则不能使用ar++这样的表达式,因为ar++会改变ar的值,编译器是不允许的!我这里只是点到即止,为了说明数组名与指针变量之间有很大的联系,具体可以参看相关C语言教材

    函数的地址传递方式为程序提供了很大的灵活性,但是存在着用户可能会不经意修改了一些数据的可能。从ANSI C开始,提供了const关键字来保护数组内容,可以在函数声明和函数定义中加入const关键字,若函数中出现了对该数组的意外修改则会报错,另外这样使用const关键字是不要求原始数组是固定不变的,只是用于要求该子函数的动作不能改变我的数组参数的内容,达到数据保护的目的。

    这里我提供了一个实用性较强的例子:老师输入同学成绩,然后程序显示出同学们的成绩,并给出评定报告,报告内容包括:最高分,最高分人数,90分以上人数,不及格人数以及平均分。由于输入成绩之后我不希望这个成绩被程序意外修改了,所以在子函数中采用const关键字进行保护,另外我希望评定报告的程序能用一个子函数来实现,但是需要返回这么多结果,显然采用return语句无法实现,所以采用数组来进行实现,具体代码如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值