c/c++ 数组传参

在c/c++中,在进行数组传参时,数组的元素个数默认是不作为实参传入调用函数,也就是说c/c++ 不允许向函数传递一个完整的数组作为参数

实例:

1.形式参数是一个指针,实参包括数组长度:

1  void myFunction(int *param,int length){
2      for (int i = 0; i<length - 1; i++)
3      {
4          cout << param[i] << "\t"<<endl;
5      }
6  }

2.形式参数是一个已定义大小的数组:

1 void myFunction(int param[10])
2 {
3     for (int i = 0; i<9; i++)
4     {
5         cout << param[i] << "\t" << endl;
6     }
7 }

3.形式参数是一个未定义大小的数组,实参包括数组长度:

1 void myFunction(int param[],int length){
2     for (int i = 0; i < length - 1; i++)
3     {
4         cout << param[i] << "\t"<<endl;
5     }
6 }

主函数调用方法:

 1 #include<iostream>
 2 using std::cout;
 3 using std::endl;
 4 #define  SIZE 10
 5 class  NewMessage{
 6 private:
 7     //一般用来声明变量
 8
 9 public:
10     int array[SIZE];
11     void myFunctionOne(int *param,int length);
12     void myFunctionTwo(int param[SIZE]);
13     void myFunctionThree(int param[], int length);
14 };
15 void main()
16 {
17     NewMessage  newMessage;
18     newMessage.array[SIZE] = {1};
19     newMessage.myFunctionOne(newMessage.array, SIZE);//方法1
20     newMessage.myFunctionThree(newMessage.array, SIZE);//方法2
21     newMessage.myFunctionTwo(newMessage.array);//方法3
22 }
23 //1.形式参数是一个指针,实参包括数组长度:
24 void NewMessage::myFunctionOne(int *param,int length){
25     for (int i = 0; i<length - 1; i++)
26     {
27         cout << param[i] << "\t" << endl;
28     }
29 }
30
31 //2.形式参数是一个未定义大小的数组,实参包括数组长度:
32 void NewMessage::myFunctionThree(int param[], int length){
33     for (int i = 0; i < length - 1; i++)
34     {
35         cout << param[i] << "\t" << endl;
36     }
37 }
38
39 //3.形式参数是一个已定义大小的数组:
40 void NewMessage::myFunctionTwo(int param[SIZE])//注意:这种用法跟 void NewMessage::myFunctionTwo(int (&param)[SIZE])用法一样
41 {
42     for (int i = 0; i<SIZE; i++)
43     {
44         cout << param[i] << "\t" << endl;
45     }
46 }

如果想要传入一个数组是一个任意大小的那么应该用以下方法:

1 template<int N>
2 void  function(int (&array)[N]);//此方法叫非类型模板参数//任意大小的int型数组都可传入
时间: 2024-08-02 07:00:01

c/c++ 数组传参的相关文章

关于C语言中二维数组传参————————【Badboy】

直接上代码: #include void Fun(int *a[],int m,int n)// { printf("%d\t",*a);//[0][0] /* int e[2][2][2]={8,7,6,5,4,3,2,1}; int *f,***g; g=e; f=e;//有警告,但不会报错 printf("%d\n",*f); */ } /*解释: Fun()中的int *a[2]表示定义指针数组a[2],a[0],a[1]存储的都是指针, a表示的是数组的首

WebFlux系列(九)WebClient Uri列表、数组传参

#Java#Spring#WebFlux#Reactor#WebClient#Uri#传参#数组#列表# WebClient Uri列表.数组传参 视频讲解:  https://www.bilibili.com/video/av83351261/ 服务端: @RestController class EmployeeController { @GetMapping("employee") public Mono<String> requestList(@RequestPar

C++中二维数组传参的方法详解

C++中二维数组传参的方法详解 首先需要明确,C++中其实没有多维数组,所谓的多维数组,其实就是数组的数组: 另外,数组中元素的个数也是数组类型的一部分. 当一个数组的元素仍然是数组时,通常使用2个维度来定义它,一个数组表示数组本身的大小,另一个维度表示其元素大小(它的元素也是数组): int ia[3][4]; //大小为3的数组,每个元素是含有4个整数的数组 int (*p)[4] = ia;//p指向含有4个整数的数组(指向第一个内层数组) 1 将给定第二维长度的二维数组作为形参传递 #i

结构体和数组传参注意

;数组的传参默认是传的数组元素的首地址,所以在函数内部是无法得到数组的大小的需要传一个size进来 int a = {1,2,3}; sum(a,sizeof(a)/sizeof(a[0])); //此处传的是数组的首地址 ;结构体当作参数的时候要传地址,否则编译器传的是副本会产生很大的内存拷贝

关于二维数组传参做形参(转)

二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正确的是:void Func(int array[3][10]); void Func(int array[][10]);可以省略第一维的大小 错误的是void Func(int array[][].这样的用法只能在初始化时可以用);这样写也是错误:void Func(const int m,const

字符串连接,数组传参

http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1971 注意: 数组作为参数传递给函数F()时,可以在F中不指定数组内元素个数(F(char dst[],char src[]))的原因就在于: 编译函数时设置成函数接收的是数组的首地址,而不是一个具有实际元素个数的数组, 所以也不会进行边界检查. cpp代码: #include<iostream> #include<cstring>

指针数组传参

指针数组作为参数传递可实现传递第二维不确定的二维数组 #include<bits/stdc++.h> using namespace std; typedef long long ll; #define frewri freopen("1.ou","w",stdout) const int maxn=3e5+7; const ll mod=1e9+7; int ar[maxn],n,m,k; int arr[10][10]; void func(int

二位数组传参及二位数组动态分配问题

//二位数组参数传递 //1. void display1(int arr[][4], const int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 4; j++) { cout << arr[i][j] << ' '; } cout << endl; } cout << endl; } //2. void display2(int(*parr)[4], const

JavaScript 对象,数组等传参

例:把人物信息的值传入函数进行处理.简化为如下:css部分#wrap{ width: 100px; background: #0f0;}HTML部分<div id="wrap"></div>JS部分1.对象传参var oWrap = document.getElementById('wrap');var objs1 = { "name":"zack", "age":"23", &qu