基础备忘:数组做为函数参数
来源:互联网 发布:2017广西广电网络快吗 编辑:程序博客网 时间:2024/05/16 09:08
一、一维数组做参数
1) 用数组名做为函数参数时,不是进行值传,而是地址的传递,也就是说把实参数组的首地址赋予形参数组名。例如,下面语句声明了一个数组为函数参数的func().
int func(int a[10]);
2) 用数组做为函数参数,其长度是没有意义的。也就是说上面的函数声明与下面的声明是等效的。
int func(int a[]);int func(int a[100]);
3) 编译器会自动把数组参数当做指针进行解释,这个指针指向一块连续的内在。而这样的一个指针中不会保存长度信息。所以函数声明时,数组参数的长度是没有意义的。为了解决这个问题,可以在参数列表中附加一个长度参数。如:
int func(int a[],int n);//n表示数组长度
下面是一个一维数组的例子,由于传的是指针,所以操作的是同一个地址块,调用func后main函数中的a[]的值也发生改变。
#include<iostream>using namespace std;void func(int a[],int n){ for(int i=0;i<n;i++) { cout<<a[i]; a[i]=a[i]+1; } cout<<endl; }int main(){ int a[5]; for(int i=0;i<5;i++) cin>>a[i]; func(a,5);//数组做参数,传数组名,操作的是同一个地块块 for(int i=0;i<5;i++) cout<<a[i]; cout<<endl; system("pause"); }
二、传递多维数组
在C++中,除了可以传递一维数组参数外,还可以传递多维数组参数。以二维数组为例,在传递二维数组参数时,需要数组形参明确最后一维的大小,否则会出现编译错误。同时还需要提供每一维的大小参数。
#include<iostream>using namespace std;void func(int a[][3],int m,int n)//a[][3]明确最后一维大小{ for(int i=0;i<m;i++) for(int j=0;j<n;j++) a[i][j]=a[i][j]+1; }int main(){ /* int a[3][3];//在声明时初始化才能把第一维的大小省了,如a[][3]={1,2,3,4,5,6,7,8,9}; for(int i=0;i<3;i++) for(int j=0;j<3;j++) cin>>a[i][j];*/ int a[][3]={1,2,3,4,5,6,7,8,9}; func(a,3,3);//这里只需要数组名就可以了 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) cout<<a[i][j]<<" "; cout<<endl; } system("pause"); }
- 基础备忘:数组做为函数参数
- 数组做为函数参数
- 数组做为参数传递给函数
- C-数组名做为函数参数
- 以数组做为参数
- 用数组做为参数传递
- 基础备忘:带参数的main 函数
- 一级指针做为函数参数
- java 11:数组作为函数参数,数组做为函数返回值
- java 11:数组作为函数参数,数组做为函数返回值
- 如何把多维数组传入函数做为参数之几个方法
- javascript中函数做为参数的调用
- 函数指针做为参数的例子
- 基础备忘:字符数组、字符串和字符串处理基本函数
- 基础备忘:函数模板在数组中的使用
- 结构体基础 数组 做函数参数
- [c++基础] 函数参数传递,数组
- c 数组做为形参时 该参数退化为指针
- 杂记
- eclipse常用操作
- win7下设置 WiFi AP
- NFS 服务器的搭建
- 腾讯OAuth2.0隐式授权介绍
- 基础备忘:数组做为函数参数
- JQuery.html()与jquery.append(document.createTextNode())的区别
- OpenID 和OpenKey
- Python 二维数组
- Matlab 中的线性规划函数使用方法
- 一个例子搞懂Servlet&JSP
- main()是程序运行的第一个函数吗?
- JSON和JSONP
- 6410开发板接CAN模块、调试