C++ Primer知识系列三:函数基础

C++ Primer知识系列三:函数

格式:函数返回值类型 函数名(参数列表){……}

1、参数

//1. 数组参数,传递的是地址  
int func1(int arr[],int n)
int func2(int* arr,int n)  
int func3(const int arr[],int n)//const原始数组不被修改
//二维数组
int func4(int* arr[4],int m)
int func5(int arr[][4],int m)  
//2. C-风格字符串参数
int func6(const char* s或const char s[])
char* func7(char ch,int n){
    char* p = new char[n+1];
    p[n] = '\0';
    while (n--) p[n]=ch;
    return p;
}//返回C-风格字符串
char* res = func7('c',5);
delete[] res;
//3. 结构参数
//可以按值传递
struct structExam{...};
void func8(structExam t1)
//与数组类似,可以传递地址(取地址:&结构名)
void func8(const structExam* t1)
func8(&t);

2. 函数指针

函数地址:存储其机器代码的内存的开始地址,函数名就是函数地址。

声明函数指针:返回类型 (*函数指针名) (参数列表);

使用指针调用函数: (*函数指针名)(…);

指向函数指针的指针:

typedef int (*p_fun)(...);
int f1(...);
p_fun p1 = f1;//f1是函数指针,p1是指向函数指针的指针

3. 内联函数

在函数声明和定义前加关键字inline,内联函数用内联代码代替函数调用,运行速度快但占用内存多,但不能递归且编译器不一定会满足内联函数要求。

4. 引用变量

引用是变量别名,用作函数形参,函数可使用原始数据。

类型& 引用名=变量名;必须在声明时初始化。

注意:应避免返回函数终止时不再存在的内存单元的引用。

5. 函数重载

名称相同但函数特征标(参数列表)不同的函数。

类型自身与其引用视为相同的特征标。

6. 函数模板

//多种类型使用同一函数,但并非所有参数必须为模板类型
template <class T>
void func(T a,T b){...}
//显示具体化,优先级:非模板函数>具体化>常规模板
template<> 常规函数......
//显示实例化
template void func2<int>(...){...}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值