目录

main函数

常量

常量的定义方式

变量

数据类型

整型

sizeof关键字

实型(浮点型)

科学计数法

字符型

ASCII码的组成

字符串型

字符串的两种风格

布尔型

关键词

标识符(变量、常量)命名规则

转义字符

数据输入

运算符

算数运算符

赋值运算符

比较运算符

逻辑运算符

程序流程结构

选择结构之if语句

三目运算符

选择结构之switch语句

switch语句的适用范围

循环结构之while语句

time()函数

随机数种子

随机数生成器

循环结构之do…while语句

循环结构之for语句

嵌套循环

跳转语句之break语句

跳转语句之continue语句

跳转语句之goto语句

数组

一维数组

一维数组的定义形式

一维数组数组名

**冒泡排序**

二维数组

二维数组的定义形式

二维数组数组名


注释

单行注释:

//单行注释

多行注释

/*
多行注释
*/

main函数

main函数是一个程序的入口,每个程序有且仅有一个main函数

常量

用于记录程序中不可更改的数据

常量的定义方式

#define 常量名 常量值

【在文件上方定义,表示一个常量,不可修改】

const 数据类型 常量名 =  常量值

【在变量定义前加关键词const,修饰变量为常量,不可修改】

变量

给一段指定内存空间取名,方便管理这段内存空间

包括:整型、浮点型、字符型、字符串型、布尔型等

数据类型

创建一个变量或常量时,必须指定相应的数据类型,否则无法给变量分配合适大小的内存空间

整型

整数类型

short(短整型) ---- 2字节 ---- (-2^15 ~ 2^15-1) 【(-2^(8x-1) ~ 2^(8x-1)-1)---】

int(整型) ---- 4字节 ---- (-2^31 ~ 2^31-1)

long(长整型) ---- Windows4字节;Linux(32位)4字节;Linux(64位)8字节 ---- (-2^31 ~ 2^31-1)

long long(长长整型) ---- 8字节 ---- (-2^63 ~ 2^63-1)

sizeof关键字

sizeof():用于统计 数据类型/标识符 所占内存大小

实型(浮点型)

float(单精度) ---- 4字节 ---- 6~7位有效数字

double(双精度) ---- 8字节 ---- 15~16有效数字

1.定义float型,需要在数字后加【f】

2.默认情况下,编译器精确到小数点后六位输出,会显示6位有效数字

3.不考虑内存的情况下,浮点数用double类型更好:当数值大到一定程度时,就会有差别,double型比float型更精确

科学计数法

double d1 = 2e-3; //即:2 * 10 ^ (-3)

字符型

用于显示单个字符

1.显示字符变量时,用单引号括起来

2.字符型变量,是将对应的ASCII码放入存储单元,只占用1字节

3.特殊的几个ASCII编码:a--97;A--65 【记不住可以用sizeof查一下】

ASCII码的组成

1.ASCII非打印控制字符:ASCII表上的数字 0-31 分配给控制字符,用于控制打印机等外围设备

2.ASCII打印字符:数字 32-126 分配给能在键盘上找到的字符,当查看或打印文档时就会出现

字符串型

用于表示一串字符,用双引号括起来

字符串的两种风格

C风格字符串:        char 变量名[] = "字符串值"

C++风格字符串:    Sring 变量名 = "字符串值"

用字符串型,最好加上string头文件

布尔型

代表真或假值

bool类型只有两个值:true(真,非0的值);false(假,值为0)

bool类型占1个字节

关键词

C++中预留的单词,在定义变量或常量时,不要用关键词,否则会产生歧义

asm  auto  bool  break  case  catch  char  class  const  canst_cast  continue  default  delete  do  double  dynamic_cast  else  enum  explicit  export  extern  false  float  for  friend  goto  if  inline  int  long  mutable  namespace  new  operater  private  protected  public  register  reinterpret_cast  return  short  signed  sizeof  static  static_cast  struct  switch  template this  throw  true  try  typedef  typeid  typename  union  unsigned  using  virtual  void  volatile  wchar_t  while

标识符(变量、常量)命名规则

1.不能是关键字

2.只能由字母、数字、下划线组成

3.第一个字符必须是字母或下划线

4.字母区分大小写

5.争取做到见名知意,方便阅读

转义字符

表示一些不能显示出来的ASCII字符

\a --- 警报 --- 7

\b --- 退格(BS),将当前位置移到前一列 --- 8

\f --- 换页(FF),将当前位置移到下页开头 --- 12

\n --- 换行(LF),将当前位置移到下一行开头 --- 10

\r --- 回车(CR),将当前位置移到本行开头 --- 13

\t --- 水平制表(HT),跳到下一个TAB位置 --- 9

\v --- 垂直制表(VT) --- 11

\\ --- 代表一个反斜线字符"\" --- 92

\' --- 代表一个单引号字符 --- 39

\" --- 代表一个双引号字符 ---34

\? --- 代表一个问号字符 --- 63

\0 --- 数字0 --- 000

\ddd --- 八进制转义字符,d范围0~7 --- 3位8进制

\xhh --- 16进制转义字符 --- 3位16进制

数据输入

cin,用于从键盘获取数据

运算符

用于执行代码的运算

1.算数运算符 --- 处理四则运算

2.赋值运算符 --- 将表达式的值赋给变量

3.比较运算符 --- 用于表达式的比较,并返回一个真值或假值

4.逻辑运算符 --- 根据表达式的值返回真值或假值

算数运算符

1.+  ------  正号/加

2.-  ------  负号/减

3.*  ------  乘

4./  ------  除

5.++ ------  前置递增 & 后置递增

6.-- ------  前置递减 & 后置递减

7.%  ------  取模(取余)

两个整数相除,结果一定是整数,直接抹除小数点后数字

除法运算和取模运算中,除数不可以为0

取模运算的本质,就是求余数

取模运算中,表达式必须是整数或未区分范围的枚举类型

前置递增/递减:先让变量递增/递减,后进行表达式计算【先加减,再计算】

后置递增/递减:先进行表达式计算,后让变量递增/递减【先计算,再加减】

赋值运算符

用于将表达式的值赋给变量

=        +=        -=        *=        /=        %=

比较运算符

用于表达式的比较,并返回一个1(真值)或0(假值)

==        !=        >=        <=        >        <

逻辑运算符

根据表达式返回1(真值)或0(假值)

!(非)        &&(与)        ||(或)

程序流程结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

顺序结构:程序按顺序执行,不发生跳转

选择结构:依据条件是否满足,有选择的执行相应代码

循环结构:依据条件是否满足,循环多次执行某段代码

选择结构之if语句

执行满足条件的语句

包括三种基本形式:单行、多行、多条件

单行if语句

if(条件) { 条件满足时执行的语句 }

多行if语句

if(条件) { 条件满足时执行的语句 }

else{ 条件不满足时执行的语句 }

多条件if语句

if(条件1) { 条件1满足时执行的语句 }

else if(条件2) { 条件2满足时执行的语句 }

...

else { 条件都不满足时执行的语句 }

嵌套if语句:在if语句中,可以嵌套使用if语句,进行更精确的条件判断

三目运算符

表达式1 ? 表达式2 : 表达式3;

若表达式1的值为真,执行表达式2,并返回其结果;
若表达式1的值为假,执行表达式3,并返回其结果。

选择结构之switch语句

执行多条件分支语句

switch(表达式)
    {
        case 结果1: 执行语句;break;
        case 结果2: 执行语句;break;
        …
        default: 执行语句;break;
    }

break ------ 用于退出当前分支,失去break关键字,程序会一直向下执行

switch语句的适用范围

switch语句中,表达式的值只能是整型或字符型,不可以是一个区间

结构清晰、执行效率高

循环结构之while语句

只要循环条件的结果为真,就执行循环语句

while(循环条件) { 循环语句 }

在执行循环语句时,要注意提供跳出循环的出口,避免死循环

time()函数

返回当前 UNIX 时间戳,即自 UTC 时间 1970 年 1 月 1 日 00:00 小时以来经过的秒数。

#include<ctime> //time系统时间头文件

time_t time( time_t* timer );

如果你需要确保每次执行算法时都提供不同的种子,请使用time()函数为随机数生成器提供种子

随机数种子

用于设置rand()产生随机数时的随机数种子,避免出现伪随机

srand( unsigned int seed );

参数seed必须为整数,如果每次seed的值都相同,会出现伪随机数,因此,一般使用time(0)或time(NULL)作为seed

在循环结构中,随机数种子只设置一次即可,不要重复设置!会出现伪随机

错误示例:

for(...)

{

srand(time(NULL));

cout << rand() << "\t";

}

由于循环执行的很快,time()函数每次的返回值都相同,直到下一秒

随机数生成器

rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的

rand() //不要参数,返回一个从0到RAND_MAX(最大随机数)之间的任意整数,RAND_MAX 的范围最少是在 32767 之间(int),即双字节(16位数);若用unsigned int 双字节是 65535,四字节是 4294967295 的整数范围

rand() % n + a; //返回一个从a到n+a-1的随机数

rand()产生的是伪随机数字,每次执行是相同的,若要不同,需要用函数srand()产生不同的随机数种子

循环结构之do…while语句

do{ 循环语句 }while(循环条件);

与while循环语句的区别:do…while会先执行一次循环语句,再判断循环条件【先do再while】

循环结构之for语句

for(起始表达式;条件表达式;末尾循环体)
    {
    循环语句;
    }

执行顺序:起始表达式 --> 条件表达式 --> 循环语句 --> 末尾循环体 --> 条件表达式 --> 循环语句 --> 末尾循环体 --> ... --> 条件表达式

for循环中的表达式,要用分号进行分隔

while,do...while,for都是开发中常用的循环语句 ------ 其中for循环结构清晰,最为常用

嵌套循环

在循环体中再嵌套一层循环 ------ 外层执行一次,内层循环一周

跳转语句之break语句

用于跳出选择结构或循环结构

常用于:
    1.switch条件语句中,终止case并跳出switch
    2.循环语句中,跳出当前循环语句(在嵌套循环中使用,会跳出所在循环层)

跳转语句之continue语句

在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

continue和break的区别:break会退出循环,continue不会

跳转语句之goto语句

可以无条件跳转语句【流氓代码,尽量别用】

goto 标记;

标记:

如果标记名称存在,执行到goto语句时,会自动跳转到标记位置

约定规范:标记名一般为大写字母【e.g: FLAG】

数组

存放了相同数据类型的数据元素的集合

1.每个数据元素的数据类型都相同

2.数组由连续的内存位置组成

一维数组

一维数组的定义形式

数据类型 数组名[ 数组长度 ];

数组名[ 下标 ] = 元素值; ------ 给数组中的元素赋值

数据类型 数组名[ 数组长度 ] = { 值1, 值2, … };

数据类型 数组名[ ] = { 值1, 值2, … };

1.可以通过下标访问数组元素 ------ 数组名[ 下标 ]

2.数组中的下标,从0开始索引,到数组长度-1为止

3.数组的命名规范与变量的命名规范一致,不要和变量重名

一维数组数组名

1.统计数组所占内存空间

sizeof(数组名)        //整个数组所占的内存空间按

sizeof(数组名[ 下标 ])        //数组中一个数据元素所占的内存空间

sizeof(数组名) / sizeof(数组名[ 下标 ])        //数组中元素个数的计算

2.获取数组的首地址【十六进制】

cout << 数组名; --- 数组的首地址
cout << &数组名[ 下标 ]; --- 数组元素的地址,‘&’取地址符

数组首地址与数组第一个元素的地址相同

注意:数组名是常量,指向数组首地址,不可以进行赋值操作

**冒泡排序**

最常用的排序算法

1.比较相邻的两个元素,按大小排序交换

2.对每一对相邻元素进行同样的工作;第一轮对比结束后,会找到第一个最大值/最小值

3.重复以上步骤,每次比较次数-1,直到不需要比较

//从小到大排列

for(int i = 0; i < 元素个数 - 1; i++)        //总排序轮数为:元素个数 - 1

{

for(int j = 0; j < 元素个数 - 当前轮数 - 1; j++)        //每轮对比次数:元素个数-当前轮数-1

{

int temp = 数组名[j];

数组名[j] = 数组名[j+1];

数组名[j+1] = temp;

}

}

二维数组

又称为矩阵,行列数相等的矩阵称为方阵

二维数组的定义形式

数据类型 数组名[ 行数 ][ 列数 ];

数据类型 数组名[ 行数 ][ 列数 ] =

{

{数据1, 数据2, …},
        {数据n, 数据n+1, …}
};

数据类型 数组名[ 行数 ][ 列数 ] = {数据1, 数据2, 数据3, 数据4, …};    //数据按行依次写入

数据类型 数组名[  ][ 列数 ] = {数据1, 数据2, 数据3, 数据4, …};

//定义时可以省去行数,但不可以省去列数

一般采用第二种定义方式,更直观,提高代码可读性

//特殊的定义方式:
数据类型 数组名[ 行数 ][ 列数 ] = {0};    //所有元素都初始化为0
数据类型 数组名[ 行数 ][ 列数 ] = { 1 };    //只有数组名[0][0]的值为1,其他元素都初始化为0

二维数组数组名

1.统计数组所占内存空间

sizeof(数组名)                        //整个数组所占内存空间
sizeof(数组名[行数])               //数组一行所占内存空间
sizeof(数组名[行数][列数])      //一个元素所占内存空间

sizeof(数组名) / sizeof(数组名[行数][列数])                 //数组的元素个数
sizeof(数组名) / sizeof(数组名[行数])                          //数组行数
sizeof(数组名[行数]) / sizeof(数组名[行数][列数])        //数组列数

2.获取数组的首地址【十六进制】

cout << 数组名; --- 数组的首地址
cout << 数组名[ 行标 ]; --- 数组某行的首地址
cout << &数组名[ 行标 ][ 列标 ]; --- 数组元素的地址

数组首地址与数组首行的首地址与数组第一个元素的地址相同

【自用】C++学习笔记(一)相关推荐

  1. 学习沐神课程 自用深度学习笔记05 线性回归基础优化算法

    线性回归&基础优化算法 线性回归 导入: 美国买房 价格的影响因素: 卧室个数 卫生间个数 房屋大小 据此给出一个价格 影响因素记为关键因素 成交价记为y 权重为w 偏差为b 关键因素:x1, ...

  2. 【学习笔记】产品经理必备技能之数据分析(二)常见数据分析方法(上)

    内容来自小破站<黑马程序员-产品经理必备技能之数据分析>复习自用 [学习笔记]产品经理必备技能之数据分析(二)常见数据分析方法(上) 3 常见数据分析方法 3.1 基础数据分析(日常工作) ...

  3. 【学习笔记】C++ 核心编程(二)类和对象——封装

    内容来自小破站<黑马程序员C++>复习自用 [学习笔记]C++ 核心编程(二)类和对象--封装 4 类和对象 4.1 封装 4.1.1 封装的意义(一) 4.1.1 封装的意义(二) 4. ...

  4. Redis学习笔记(实战篇)(自用)

    Redis学习笔记(实战篇)(自用) 本文根据黑马程序员的课程资料与百度搜索的资料共同整理所得,仅用于学习使用,如有侵权,请联系删除 文章目录 Redis学习笔记(实战篇)(自用) 1.基于Sessi ...

  5. MYSQL学习笔记(自用)第九章

    MYSQL学习笔记(自用)第九章 第一节. 触发器 | Triggers DELIMITER $$CREATE TRIGGER payments_after_insertAFTER INSERT ON ...

  6. MYSQL学习笔记(自用)第七章

    MYSQL学习笔记(自用)第七章 第一节.创建视图| Creating Views USE sql_invoicing;CREATE VIEW sales_by_client AS SELECT c. ...

  7. Linux学习笔记(自用)

    Linux学习笔记(自用) 该笔记由尚硅谷的"3天上手LInux"视频整理而成,若有侵权,请联系作者删除 文章目录 Linux学习笔记(自用) 1. 概述 2. 下载 3.文件与目 ...

  8. verilog学习笔记之一--(简化)华莱士(Wallace)树形乘法器设计--(原代码出自用芯学项目)

    verilog学习笔记之一–(简化)华莱士(Wallace)树形乘法器设计–(原代码出自用芯学项目) 学习准备1: 树形乘法器原理:参考<数字集成电路-电路.系统与设计(第二版)>–P43 ...

  9. JVM学习笔记(自用)

    JVM学习笔记(自用) 文章目录 JVM学习笔记(自用) 1.简介 2.程序计数器 3. 虚拟机栈 4. 方法区 5. 直接内存 6. 垃圾回收 Young Collection Young Coll ...

  10. openCV4.0 C++ 快速入门30讲学习笔记(自用 代码+注释)详细版

    课程来源:哔哩哔哩 环境:OpenCV4.5.1 + VS2019 目录 002.图像色彩空间转换 003.图像对象的创建与赋值 004.图像像素的读写操作 005.图像像素的算术操作(加减乘除4种不 ...

最新文章

  1. 全民K歌推荐后台架构
  2. AdventureWorksBI.msi 和 AdventureWorksDB.msi 的官方下载地址及安装方法
  3. ecshop数据表结构说明
  4. 学习笔记:文本过滤_____unix 下的通配符
  5. 打入硅谷的局外人|Decode the Week
  6. Wireshark常用过滤使用方法
  7. 自定义字符串函数:strlen,strcat,strcpy,strcmp
  8. NSIS脚本语言安装与编译
  9. mysql4函数_MySQL-4.常见函数
  10. java 模拟 减法 进位_位运算实现加减乘除四则运算(Java)
  11. Lightroom Classic 教程,如何结合使用Photoshop 和 Lightroom?
  12. Vue生命周期-手动挂载理解
  13. windows10无法使用内置管理员账户打开应用
  14. 在HTML中 怎么一张图片上在放一张图片,css sprites把很多小图集成在一张图片上...
  15. windows批处理脚本bat命令解析【6】常用命令整理
  16. 敏捷实践不可忽略的环节
  17. 【转】十大智能家居系统解决方案
  18. Beef的安装及基本使用
  19. STM32使用库函数控制时钟芯片DS1302提供时间
  20. Deepin wine QQ 安装

热门文章

  1. php图片比例不失真,PHP中图片实现等比例不失真缩放
  2. 网络布线与综合布线系统学习
  3. html标签做在美甲上画英文字母,HTML蓝色欧美形式润色美容美甲网页模板代码
  4. etag php,Http 1.1 Etag 与 Last-Modified提高php效率
  5. app测试必掌握的核心测试:UI、功能测试
  6. 谷歌浏览器调试工具中sources面板
  7. Amazon Mechanical Turk 的质量管理
  8. linux怎么跨节点访问数据,Apache Cassandra多节点跨数据中心集群配置以及日常操作...
  9. AD域服务器的搭建(3)--搭建AD域
  10. 零基础HTML入门教程(14)——表格