this指针
this指针
函数重载
函数名相同但是形参列表不同称为函数重载
常量表达式函数
constexpr int num()
{
}
内联函数
将函数的内容由编译器直接替代主程序中的函数调用
int main()
{
int sum = 0;
sum = sum(20,30);
}
inline int sum(int b, intc)
{
return b + c;
}
#include <iostream>
#include <string>
using namespace std;
// 求两个数的调和平均数
// sca = (2*a1*a2) / (a1+a2);
// 1
enum Etimate {
zero = 0,
nonzero
};
void ScanfFunc(int&, int&);
Etimate EtimateFunc(int&, int&);
// 2,3
double HarmonicAverage(int&, int&);
int main()
{
int num1 = 0;
int num2 = 0;
double harAve = 0;
bool numBool = false;
Etimate numEtimate = {nonzero};
while (1)
{
ScanfFunc(num1, num2);
numEtimate = EtimateFunc(num1, num2);
if (zero == numEtimate)
{
return 0;
}
else if (nonzero == numEtimate)
{
harAve = HarmonicAverage(num1, num2);
cout << "输入的数字是:" << num1 << " or " << num2 << ", 它们的调和平均数是: " << harAve << endl;
}
}
}
// 1、不断要求用户输入2个数,直到其中一个值为0;
void ScanfFunc(int& num1, int& num2)
{
cout << "请输入两个数." << endl;
cout << "第1个数:";
cin >> num1;
cout << "第2个数";
cin >> num2;
}
Etimate EtimateFunc(int& num1, int& num2)
{
if (0 == num1 || 0 == num2)
{
return zero;
}
else
{
return nonzero;
}
}
// 2、对于每2个数,程序将使用一个函数来计算它们的调和平均数
// 3、函数将计算结果返回给主函数, 在主函数中输出输入的数字和它们的调和平均数
double HarmonicAverage(int& num1, int& num2)
{
return (double)((2 * num1 * num2) / (num1 + num2));
}
const int &num == const int* const num;
&num == const num;
// 无法修改p所指向的地址及地址中的内容
const修饰的是int* 和变量p
const int* const p = 20;
// 可以更改p所指向的地址,但是无法更改地址中的内容
// const修饰的是int*
const int* p = 20;
// 可以修改地址中的内容,但是无法修改p指向的内存地址
//const修饰的是变量p
int* const p = 20;
int main()
{
int a = 0;
int b = ; int c = 0;
// 应用变量
Funcch(a);
// 指针变量
Funch01(&b);
//普通变量,返回值
c = Funch02(c);
printf("%d\n", a);
}
// 引用变量类似于指针,函数使用的是原始数据
void Funch(int &r)
{
r = 100;
}
void Funch01(int * p)
{
*p = 100;
}
int Funch02(int a)
{
a = 100;
return 100;
}
const int *p
可以修改地址,不可以修改值
int const *p
可以修改值,不可以修改地址
this指针访问自己的地址
Studet stu1 = Student("Sandy",21);
Student stu2("Jane",20);
头文件中常包含的内容:
1.函数原型
2.使用#define或者const定义的符号常量
3.结构声明
4.类声明
5.模版声明
6.内联函数
bool (*pf) (const string &, const string &)
pf = lengthcompare
arr是一个指针指向数组第一个元素
int sum_arr(const int arr[]) {
arr[0] = 1; 因为有const 所以不能赋值
return 0;
}
常量表达函数
constexpr int fact(int n){
return n == 1?1:n * fact(n - 1);
}
常量表达式
constexpr int num = 7;
在编译期间就就可以计算结果
fact(7)
fact(num)
int i = 7
实参为变量时 在运行期间返回结果
fact(i)
不可以修改形参i
int cube1(cont int i){
}
https://www.cnblogs.com/xwdreamer/archive/2012/04/12/2444494.html
引用型参数,函数使用的是原始数据,而不是副本,对形参的修改就是对实参的修改
void reset(int &i){
i = 4
}
int a = 8;
reset(a)
a的值变为8
int reset1(int i){
}
修改*pi的值,就是修改实参指向的的对象的值,修改pi的值,是修改形参存储的地址,不影响实参的地址
int reset2(int *pi){
*pi = 20;
pi = 0;
}
int a = 2;
reset2(a);
a的值变为20 但是a的地址没有变
静态局部变量
每次调用都不会初始化,只到程序结束,但是只是局部变量,外部不能用
int min(){
static int a = 1;
a += 1;
}