在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 (¶m)[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型数组都可传入