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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C语言自学完备手册(17)——函数(3)
下一篇:C语言自学完备手册(15)——函数(1)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 05时32分38秒