首页 > 代码库 > c/c++ 数组传参

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型数组都可传入

c/c++ 数组传参