C语言自学完备手册(16)——函数(2)
发布日期:2021-06-30 11:19:39
浏览次数:2
分类:技术文章
本文共 1521 字,大约阅读时间需要 5 分钟。
版权声明
- 本文原创作者:
- 作者博客地址:
在本小结中,主要探讨数组与函数。
示例 1
找出数组中的最大值。
代码如下:
#include#include //获取数组中的最大值int getMax(int a[],int length){ int i,max; max=a[0]; for(i=0;i max){ max=a[i]; } } return max;}int main(){ int a[]={ 3,4,5,1,2}; int length=sizeof(a)/sizeof(a[0]); int max=getMax(a,length); printf("数组的最大值是:%d",max); return 0;}
此处为函数getMax(int a[],int length)设计了两个输入参数即:数组及其长度。看起来有点怪,有点画蛇添足的感觉:只传数组不就可以了么?拿到了数组不就可以通过sizeof(a)/sizeof(a[0]);
获取其长度了么?答案是否定的。因为在C/C++ 中把数组作为参数传递时,虽然传递的是首地址地址,但是参数到了函数内就成了普通指针,不再是数组首地址了;所以,试图在别的函数中得到被传递数组的长度是不可行的。故,通常的做法是:在涉及到数组操作时传数组和其对于的长度作为函数的输入参数。
示例 2
在刚才的代码的基础上稍微修改一点代码。
代码如下:
#include#include //获取数组中的最大值int getMax(int a[],int length){ int i,max; a[2]=88; max=a[0]; for(i=0;i max){ max=a[i]; } } return max;}int main(){ int a[]={ 3,4,5,1,2}; int length=sizeof(a)/sizeof(a[0]); int max=getMax(a,length); printf("数组的最大值是:%d\n",max); puts("遍历数组:"); for(int i=0;i
在此只添加一行代码(即第7行):a[2]=88;
运行结果:
数组的最大值是:88遍历数组:a[0]=3a[1]=4a[2]=88a[3]=1a[4]=2Process returned 0 (0x0) execution time : 0.572 sPress any key to continue.
数组的最大值居然变成了88!!!也就是说我们在方法getMax( )中虽然只修改了形参数组中的元素,但是影响到了原来的数组!
为了解决该问题,C语言提供了禁止在函数内修改接收到的数组的方法,只需要在声明形参的时候在其前面加上关键字const即可。所以,刚才的函数getMax( )可以修改为:
int getMax(const int a[],int length){ //函数体}
在给形参int a[ ]前面加上const之后,假若再去修改数组a[ ]中的元素值则会报错。我们再从英语的角度来看看const是啥意思呢?其实,它是单词constant的缩写,释意如下:
不再多说,无需再讲。
转载地址:https://it9527.blog.csdn.net/article/details/81045628 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 05时32分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux命令cat
2019-04-30
linux中sort命令
2019-04-30
linux命令grep
2019-04-30
oracle修改数据库编码
2019-04-30
linux命令ps展示父子进程关系
2019-04-30
linux命令history
2019-04-30
linux数组变量
2019-04-30
linux删除用户命令userdel
2019-04-30
linux格式化分区
2019-04-30
linux文件编辑vi
2019-04-30
linux数学计算及bc命令的使用
2019-04-30
configure:error:libjpeg.(a|so) not found解决
2019-04-30
linux双括号语法及双方括号语法
2019-04-30
Linux获取执行脚本的脚本名
2019-04-30
Linux获取最后一个参数(参数统计)
2019-04-30
linux命令getopt及getopts命令应用
2019-04-30
Linux命令read
2019-04-30
Linux标准输出重定向及标准错误重定向
2019-04-30