指针作为参数
- 数组作为参数
- 地址传递
- 传参为指针:定义了一个普通指针p指向了这个数组
二维数组作为参数
int sum(int a[][5],int len)
{
...
}
{
int a[10][5]={...};
...sum(a,10);
}
#include <iostream>
using namespace std;
//行指针的方式传递参数
int sum1(int a[][4],int len){
int i,j,s=0;
for (i=0; i<len; i++) { //先遍历行
for (j=0; j<4; j++) {//再遍历列
s+=a[i][j];
}
}
return s;
}
// 另一种写法
int sum3(int a[][4],int len){
int i,j,s=0;
for (i=0; i<len; i++,a++) { //先遍历行
for (j=0; j<4; j++) {//再遍历列
s+= *(*a+j);
}
}
return s;
}
//行指针另一种写法传递参数
int sum2(int (*p)[4],int len){
int s=0;
for (int i=0; i<len; i++,p++) { //p作为行指针m,也可以跟着i往下走
for (int j=0; j<4; j++) {
s += *(*p+j); //p是往下走的,所以没有行上的偏移量
}
}
return s;
}
int main(int argc, const char * argv[]) {
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
cout<<"sum1:"<<sum1(a, 3)<<endl; //78
cout<<"sum3:"<<sum2(a, 3)<<endl; //78
cout<<"sum2:"<<sum2(a, 3)<<endl; //78
return 0;
}