指针作为参数

  • 数组作为参数
    1. 地址传递
    2. 传参为指针:定义了一个普通指针p指向了这个数组
int sum(int a[],int len)
{
  ...
}

{
  int a[10] = {...};
  ...sum(a,10);
}

我们知道,函数是在栈中开辟的内存,通常数组很大,再拷贝一份显然很浪费资源,而且效率不高,其实我们可以传入指针,直接操作原数组即可

一维数组作为参数

数组名就是函数的首地址

#include <iostream>
using namespace std;

int sum1(int a[],int len){ 
//int a[]表示传入是一维数组的首地址,光有地址还不够,不知道边界,还需要指定数组长度
   int sum=0;
   for (int i = 0; i < len; i++)
   {
         sum += a[i];
   }
   return sum;
}

int sum2(int *p,int len){ // int *p等价于int a[], *a=*(a+0)
  //理解,定义了一个普通指针p指向了这个数组
   int sum=0;
   for (int i = 0; i < len; i++,p++)
   {
         sum += *p;
   }
   return sum;
}

int main(int argc, char const *argv[])
{
    int a[3] = {1,2,3};
    cout << "sum:"<< sum1(a,3)<<endl;
    cout << "sum:"<< sum2(a,3)<<endl;
    return 0;
}
sum:6
sum:6

results matching ""

    No results matching ""