C++_CppNote1_基础知识

C++语言笔记

数据类型

  1. 标识符(与C语言类似)

    • 只能有大小写字母,下划线_,和数字组成
    • 只能以字母开头
    • 不能是C++的关键字
    • 区分大小写
  2. 常量

    整型常量:

    实型常量:浮点数。

    ​ 有三种数据类型:float,double,long double。(默认为double型,若后缀为F 或f则为float型)

    ​ 有两种表示形式:一般形式(如1.2)和指数形式(如2.54E3= 2.54 × 1 0 3 2.54\times10^3 2.54×103)。指数形式的规则:e前e后必须有数,e后必须为整数

    当以指数形式表示一个实数时,整数部分和小数部分可以省略其一,但不能都省略。例如 : .123E- 1, 12.E2 ,l. E-3 都正确,但不能写成E-3 这种形式。

    (郑莉主编C++语言程序设计 P26)

    经过尝试,其实2E3(2后边不带小数点)也是正确的。

    字符型常量:在计算机中以ASCII码形式存储。有一般字符和转义字符。

    ​ 一般字符如'a','A','\32'和八进制、十六进制表示的'\nnn'(n表示八进制数),'\xnnn'n表示十六进制数

    字符串常量:如"Hello,world."。在计算机中,末尾有\0作为字符串结束标志,而字符型常量没有。

    布尔常量(bool):只有两个:true和false,但是用cout进行输出的时候只能看到0和1.

  3. 变量

    3.1 变量的声明和定义

    3.2 变量的存储类型

    ​ 共有四种:auto register extern static在后续变量作用域部分会说明。

  4. 符号常量–必须初始化

    float const PI = 3.1415 ;const float PI = 3.1415;

    注意:符号常量在声明时一定要赋初值,而在程序中闯不能改变其值。

运算符和表达式

运算符

  1. 算术运算符

    +、-、*、/(若操作数都为整型,则结果为整数-斩尾取整;之一为实型则结果为浮点数)

    % 取余,操作数必须为整数

逗号运算符

注意下面代码段的结果:

int main()
{
	int a,b;
	b=(a = 3 * 5, a * 4);//a=15,但是整个表达式的值即b等于60
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	return 0;
}

逻辑运算符

逻辑与(&&)和(||)逻辑或的短路特性

表达式1 && 表达式2
//若表达式1结果为false,则不在运算表达式2
表达式1 || 表达式2
//若表达式1结果为true,则不在运算表达式2

条件运算符

表达式1?表达式2:表达式3
//先运算表达式1,若为true则以表达式2的值为结果;若为false则以表达式3的值作为结果
//==============例如===================
a>b?3*2:3+2;

也具有短路特性

函数

嵌套调用

递归调用

函数自身调用自身。必须有递归结束标志

阶乘计算,汉诺塔问题,组合问题(从n个人中选出k个人)

参数传递

  • 形参只有在调动函数时才会分配存储空间
  • 值传递是单向传递
  • 可以传递引用,双向传递

可变形参列表(考的少)

推荐使用模板initializer_list实现。

例如:

int initializerSum(initializer_list<int> il) {
	int sum = 0;
	for (auto ptr = il.begin(); ptr != il.end(); ptr++)  //类似于容器的操作
	{
		sum += *ptr;
	}
	return sum;
}
int  main() {
	int initializer_num = initializerSum({ 1,1,1,1,9 });
	printf("sum = %d", initializer_num);
	return 0;
}

内联函数inline

C++11才有的功能

函数的实现如下:

inline  double cirArea(double r)
{
	return 3.14159*r*r;
}

直接调用即可。

必须保证以下条件:

  • 内联函数体内不能有循环语句和switch语句
  • 内联函数的定义必须出现在内联函数第一次被调用之前
  • 对内联函数不能进行异常接口声明

constexpr函数

用constexpr修饰的函数。返回的是一个常量表达式。

接受它的返回值的变量也要用constexpr进行修饰,且类型一致。

具体的介绍查看:constexpr函数的介绍CSDN

默认参数函数

例如:

int add(int x = 5, int y = 6);
int  main() 
{
	cout << add()<<endl;
	return 0;
}
int add(int x, int y )
{
	return x + y;
}

两种使用方式:

  1. 方式1为函数声明在主调函数之前,应该在函数声明时就确定形参默认值,而函数实现时的形参列表中不能有默认值
  2. 方式2为传统方式,即函数定义在主调函数之前,则直接在形参列表中给出默认值。

注意:

  • 形参列表中给出默认值时,有默认值的形参一律放在最无默认值的形参之后,如int add(int x,int y=3,int z=2)是正确的,而int add(int x=1,int y=3,int z)是错误的。
  • 函数被调用时,形参的值时按顺序传递给形参的。

注意C++中的setw()函数,用来操纵cout输出的,控制紧跟着该函数的输出的宽度的,如cout <<setw(2)<<1<<endl;

详见CSDN博客讲解

函数的重载

函数重载:

两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。

函数重载规则:

  1. 形参必须不同,即形参个数或形参类型不同
  2. 如果形参类型一样但返回值类型不同视为错误(函数重复定义)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值