函数的基本知识

函数的指针参数

两种参数传递的方法:一种值传递,一种是地址传递,值传递形参改变不改变实参的值,形参所占的内存空间和实参不一样。

int swap(int nuum1,int num2)
{
    num1^=num2;
    num2*=num1;
    num1^=num2;
}
int main()
{
    int a=10;int b=20;
    swap(a,b);
}
a 10

b             

20
int num1 10
int num2 20

所以值传递时并不会改变形参,但是指针传递时,传入的是地址,所以会改变实参

int swap(int *p1,int *p2)
{
    (*p1)^=(*p2);
    (*p2)*=(*p1);
    (*p1)^=(*p2);
}
int main()
{
    int a=10;int b=20;
    swap(&a,&b);
}
a 10  0x0001

b             

20  0x0002
int *p1 0x0001
int *p2 0x0002

这里*p1相当于*0x0001,就是取a的地址,所以直接修改了实参的值

函数的数组参数

像这种,如果想要传递数组进去,不能 传递a[3]这种方式

int add(int a[3])
{
    std::cout<

因为不知道要数组的元素个数,可能是2个,也可能是3个所以推荐用下面这种方法。

数组有一种声明方式是不写下标,由编译器判断数组的容量大小

int a[]  {1,2,3};

所以数组的参数传递可以这样写,count表示数组元素个数

add(int a[],unsigned count)

当然,也可以用指针方式来传递,因为数组本身就是指针

多维数组的参数传递

必须指定低维的数组元素个数

add(int a[][2],unsigned count);
int main()
{
    a[2][2] {{1,2},{2,3}};
    add(a,2);
}

因为多维数组是以低维为步径,如果低维也用变量,就无法确定步径。

函数的引用参数

引用做函数参数时必须初始化,所有有时候用指针还是用引用做参数可以从这方面考虑

指针的引用,形参指针引用可以修改实参指针的指向,即指针的引用可以修改指针,原理非常简单

你可能感兴趣的:(C++小学之函数,c++)