数组作为函数的参数
c++中将数组名视为指针,数组名被解释为第一个元素的地址。对数组名加1相当于指向下一个元素,对指针加1相当于加上了一个指针指向的类型的长度
(这个随笔搁置了很久才发现之前没写完的,已经忘记了当时想写的了,就不做补充了)
数组作为函数的参数
将数组作为参数传递给函数时并不是将数组内容传递给函数,而是将数组的第一个元素的指针传递给函数。将数组地址作为参数可以节省复制整个数组所需的时间和内存
数组作为参数的函数的原型
①int sumArr(int arr[], int length); ②int sumArr(int* arr, int length);
//当且仅当在函数头或者函数原型中时,int arr[]和int *arr是相同的
注意:
- 因为因为指针本身并没指出数组的长度,必须显示的传递数组的长度,不能使用方括号表示法来传递数组长度
- 不能在函数中设置数组长度
void showArr(int arr[], int length);//ok void showArr(int arr[size]);//error //必须显示的传递长度不能用方括号表示法来传递数组长度
- 对数组名加1相当于指向下一个元素
void showSecond(int arr[], int length) { std::cout << arr + 1 << std::endl; } //在此函数中arr是一个int类型的指针,将该指针加一也就是加上一个int类型所占的内存单位。加一之后指向的就是传递过来的数组的第二个元素
- 传递常规变量时,函数使用该变量的拷贝。
- 传递数组时,函数将使用原来的数组。
- 如果想要防止在函数中无意中修改数组的内容,可以配合使用const关键字
void showArr(const int arr[], int length);
- 除了将数组长度显示的传递给函数以外,还有另一个方法。传递两个指针给函数,第一个指针标识数组的开头,第二个指针标识数组的结尾。
//在这里end应该为数组最后一个元素后面的指针 void showArr(const int* begin, const int* end) { const int* pt; for (pt = begin; pt != end; pt++) { std::cout << (*pt) << std::endl; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇