一,三种传递数组的写法
#include<iostream>
using namespace std;
void print(int *x,size_t size)//指向第一个数组元素的指针
{
for(int i = 0;i < size;i ++)
cout << x[i] << " ";
cout << endl;
}
void print_2(int x[],size_t size)
{
for(int i = 0;i < size;i ++)
cout << x[i] << " ";
cout << endl;
}
void print_3(int x[10],size_t size)
{
for(int i = 0;i < size;i ++)
cout << x[i] << " ";
cout << endl;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
print(arr,10);
print_2(arr,10);
print_3(arr,10);
return 0;
}
其实,这三种写法都一样,第一种最常用,第三种不怎么好。
二,数组引用传递
#include<iostream>
using namespace std;
void print(int (&x)[10])
{
for(int i = 0;i < 10;i++)
cout << x[i] << " ";
cout << endl;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
print(arr);
return 0;
}
数组引用传递,并不是一种好的方法,它不能控制数组的长度,原始数据有多少,它必须写多少,不灵活。
三,首尾传递法
#include<iostream>
using namespace std;
void print(int *beg,int *end)
{
while(beg != end)
cout << *beg++ << " ";
cout << endl;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
print(arr,arr+10);
return 0;
}
只需传递数组的第一元素指向的指针和最后一个元素的下一个元素所指向的指针就行了。
四,字符数组
#include<iostream>
using namespace std;
void print(char *c)
{
while(*c != NULL)
cout << *c++;
cout << endl;
}
int main()
{
char arr[] = "Hello ASIA";
print(arr);
return 0;
}
因为字符数组最后一个元素的下一个元素是null(\0),所以不需要传递数组的大小。
五,多维数组的传递
#include<iostream>
using namespace std;
void print(int (*x)[3],int rowSize)
{
for(int i = 0;i < rowSize;i++)
{
for(int j = 0;j < 3 ;j++)
{
cout << x[i][j] << " ";
}
cout << endl;
}
}
int main()
{
int arr[][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
print(arr,4);
return 0;
}