C++核心编程和桌面应用开发 第二天(占位参数 引用 参数传递的方式 函数的重载)

发布于:2024-09-18 ⋅ 阅读:(71) ⋅ 点赞:(0)

目录

1.占位参数

2.引用

2.1数组的引用

3.参数传递的方式

3.1值传递

3.2地址传递

3.3引用传递

4.指针的引用

4.1C语言下函数间指针的传递

4.2 C++下指针的引用

5.常量引用

6.函数的重载

6.1满足的条件

6.2使用场景

6.3注意事项

6.4重载原理

6.5extern "C"的使用


1.占位参数

C++声明函数时,可以设置占位参数,占位参数只有参数类型的声明,没有参数名称的声明

void Func(int a,int );

2.引用

本质:引用的本质是指针常量

int a=100;
int & b=a;

//即
int * const b=&a;

C++增加了按引用给函数传递地址

①引用必须初始化

int a=10;
int &b=a;

②引用初始化之后,就不可以更改指向了

③引用必须是一块可修改的内存空间

④不要返回局部变量的引用

2.1数组的引用

① 先定义数组类型,通过类型定义引用

int arr[5]={1,2,3,4,5};

typedef int(ARRAY_TYPE)[5];
ARRAY_TYPE & arr_ref1=arr;

②先定义数组引用的类型,再通过类型定义引用

typedef int(& ARRAY_TYPE)[5];
ARRAY_TYPE arr_re21=arr;

③直接定义数组引用

int(& arr_ref3)[5]=arr;

3.参数传递的方式

3.1值传递

通过值复制将参数传递给函数。因此修改的是复制的值,原始变量不会改变。

void mySwap(int a,int b)
{
    int temp=a;
    a=b;
    b=temp;
}

3.2地址传递

将参数的地址传递给函数。因此修改的是原始变量的值。

void mySwap(int* a,int* b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

3.3引用传递

函数以引用的方式接收参数,此时,修改形参的值即改变了实参的值

void mySwap(int& a,int& b)
{
    int temp=a;
    a=b;
    b=temp;
}

4.指针的引用

4.1C语言下函数间指针的传递

若想用形参修改实参的指针,必须用更高级的指针才行,同级指针是不可以的

int* p=NULL;

//同级指针,修改失败
int func(int* p)
{
    *p=100;
}

//高级指针,修改成功
int func1(int** p)
{
    **p=100;
}

4.2 C++下指针的引用

int func(int* &p)
{
    *p=100;
}

此时,利用引用的方式传递指针,本质将指针的地址串入到函数中,实现了同级指针也能修改参数

5.常量引用

const int & ref=10;

使用场景:参数的传递。防止函数内对参数的误操作

6.函数的重载

6.1满足的条件

  • ①同一个作用域
  • ②函数名称相同
  • ③函数参数个数不同/参数类型不同/参数顺序不同

6.2使用场景

同一个函数名在不同场景具有不同含义

6.3注意事项

①参数作为引用,常量引用和普通引用可以共存

②函数重载时,尽量不要使用默认参数

6.4重载原理

编译器会用不同的参数类型修饰不同的函数名。

6.5extern "C"的使用

C++调用C产生的问题:

解决方式:利用externC

方案一:在cpp中另起一行,声明要调用的C语言函数

extern "C" void show();   //在C++中调用C语言的文件

方案二:在C的头文件最上和最下添加相应的声明代码

//最上
#ifdef __cplusplus

extern "C"{

#endif


//最下
#ifdef __cplusplus

}

#endif


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章