在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型數組都可傳入