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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM