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