引用
引用就像给一个变量取别名。对引用的变量进行操作,实际上操作的就是原来的变量。这在通过函数传递参数时相较于指针提供了便利。
#include<iostream>
#include<stdio.h>
//通过引用改变变量地值
void test(int &x)
{
x = 20;
}
//通过引用改变指针的值
void test_pointer(int * &x)
{
x = (int *)malloc(sizeof(int)*1);
}
int main()
{
//引用的用法,引用相当于给一个变量取别名
int y = 10;
int &w = y;
w = 20;
printf("y is %d, w is %d \n", y, w);
printf("-----------------------------\n");
int x = 10;
printf("x is %d \n", x);
test(x);
printf("x is %d \n", x);
printf("-----------------------------\n");
int * p = NULL;
printf("p is pointing to %p \n",p);
test_pointer(p);
printf("p is pointing to %p \n", p);
getchar();
return 0;
}
重载
重载的作用是来解决函数重名的。两个同名函数,当其参数列表的个数和类型不同时,可以说这两个函数是重载关系。
#include<iostream>
#include<stdio.h>
int add(int a, int b)
{
return a + b;
}
float add(float a, float b)
{
return a + b;
}
int main()
{
printf("a add b is(int) %d \n", add(10, 11));
printf("a add b is(flaot) %.1f \n", add(10.1f, 11.1f));
getchar();
return 0;
}
从上面这段代码可以看出,定义了两个重名函数add,在main函数中对这两个重名函数进行了调用。通过调用的参数不同,编译器能够识别出来对应调用的函数。需要注意的是,在重载的时候,是根据同名函数的参数来进行重名函数的调用的。
缺省
缺省就是函数的形参列表中,给出默认值,这样在进行函数调用时,当没有对函数进行参数传递时,在函数中的形参也能有一个默认值。
#include<stdio.h>
#include<iostream>
int add(int a = 0, int b = 0, int c = 10)
{
return (a + b + c);
}
int add_a(int a , int b , int c = 10)
{
return (a + b + c);
}
int main()
{
printf(" %d \n", add(10, 11));
printf(" %d \n", add(5, 6, 7));
getchar();
return 0;
}
函数缺省参数需要按照一定的排列顺序,缺省参数应该从函数的新参列表从右向左排列。