C++语言复习笔记

零.HelloWorld

1.注释:

类型内容
多行/**/
单行//

2.别名

类型内容
usingusing t=double;
typedeftypedef double weight;

3.HelloWorld

#include<iostream>
#define var auto
using namespace std;
int main()
{
    cout << "HelloWorld!"<< endl;
    return 0;
}

一.基本数据类型

类型内容
整型short,int,long,long long
符号signed,usigned
字符char
浮点float,double,long double
布尔bool
字符串字符串常量,字符数组,string类
引用int &num=a;

二.常量

1.字面量

类型内容
字符'A'
字符串C风格
整数十进制:0-9,八进制:0+0-7数字,十六进制:0X+0~9或A-F
字符前缀u:char16_t,U:char32_t,L:wchar_t,u8:char
整型后缀L:long,LL:long long,U:unsigned
浮点一般:12.5,-13.89,指数:0.534E+2

2.符号常量

const 类型 常量名称=值;

const double PI=3.14156;

三.变量

定义

int a=0;
int a(0);
int a={0};

四.运算

运算类型内容备注
基本运算符+,-,*,/,%
自运算i++,++i,i--,--i先增后赋值和先赋值后增
赋值运算符=
符合赋值+=,-=,/=,%=运算后赋值
逗号运算表达式1,表达式2
关系运算<,>,<=,>=,==
逻辑运算&&,!,II短路特性
三元运算表达式1?表达式2:表达式3
位运算I,&,!
sizeof运算sizeof(类型名)

五.类型转换

1.隐式类型转换

char->short->int->long->long long->float->double
bool->0或1

2.显式类型转换
int(2.668)
static_cast<int>(0.668)

六.基本I/O

cin>>变量名1>>变量名2
cout<<变量名1<<变量名2

七.程序结构

1.选择

if(bool运算)
{
    语句
}
else
{
    语句
}

if(bool运算1)
{
    语句1
}
else if(bool运算2)
{
    语句2
}
...
else
{
    语句
}

switch(变量)
{
    case 常量1:
            语句1;
            break;
    case 常量2:
            语句2;
            break;
            ...
    case 常量n:
            语句n;
            break;
}

2.循环

//while
while(bool运算)
{
    语句
}
//do-while
do
{
    语句
}while(bool运算);
//for
for(初始化语句;表达式1;表达式2)
{
    语句
}
//goto
goto 标签名;
标签名:

3.循环控制

语句作用
continue结束本次循环
break结束循环

八.函数

1.定义

返回值类型 函数名(形参表)
{

}

2.调用

void f2(string str)
{
    cout<<str<<"天下第一"<<endl;
}
void f1()
{
    f2("苟茜茜")
}

3.递归

long long int f(long long int n)
{
    if(n==1)return 1;
    else return f(n-1)*n;
}

4.参数传递

类型内容
值传递void fun(变量类型 变量名1,...变量类型 变量名n)
引用传递void fun(变量类型 &变量名1,...变量类型 &变量名n)

5.内联函数

inline double fun(double r)
{
    return PI*r*r;
}

6.默认参数值

//有默认参数形参必须在形参列表最右边
void fun(int a=0,int b=666)
{
    return a+b;
}

九.数组

1.定义

数据类型 数组名[长度];
数据类型 数组名1维长度...;

2.一维数组初始化

int a[3]={1,2,3};
int a[]={1,2,66,7};

3.二维数组初始化

int a2={1,2,3,4,5,6};
int a2={{1,2,3},{4,5,6}};
int a[][4]={{1},{0,6},{0,0,11}};

十.指针

1.定义

数据类型*变量名=地址;

2.取址与取值

符号内容
**p
&&num

3.运算

符号内容
++指向下一个数据
--指向上一个数据
+n指向第n个数据
-n指向第n个数据
==判断指针是否为空:p==NULL

4.数组与指针

指向数组的指针
int a[5] = { 1,2,3,4,5 };
int* p = a;
int* q = &a[0];
指针数组
int line1[] = { 1,0,0 };
int line2[] = { 0,1,0 };
int line3[] = { 0,0,1 };
int* p[3] = { line1,line2,line3 };
动态申请内存
int** p = new int* [3];
for (int i = 0; i < 3; ++i)
    p[i] = new int[3];
for (int i = 0; i < 3; i++)
    for (int j = 0; j < 3; j++)
        cin >> p[i][j];
for (int i = 0; i < 3; i++)
    delete[](p[i]);
delete[](p);

5.指针与函数

指针作为参数
//传入数据
void fun(int* p, int len)
{
    for (int i = 0; i < len; ++i)
        cout << p[i] << " ";
}
//传出数据
void fun(double val, int *intVal, double *doubleVal)
{
    *intVal = int(val);
    *doubleVal = val-int(val);
}
返回指针的函数
int * fun(int* p, int len)
{
    for (int i = 0; i < len; ++i)
        if (p[i] == 0)
            return&p[i];
}
指向函数的指针
int run(int x, int y, int (*f)(int, int))
{
    return f(x, y);
}
int max(int x, int y)
{
    return x > y ? x : y;
}
int sum(int x, int y)
{
    return x + y;
}

5.对象指针

Point *p1=new Point;
Point*p=&p1;

csharper
1 声望3 粉丝

曲终过尽松陵路,回首烟波十四桥。