C++基本语法篇

本文详细介绍了C++的基础语法,包括数据类型、变量、运算符、序列容器(如数组和Vector)、字符串、指针、内存管理和内存泄漏。特别讨论了指针的不同类型、野指针问题以及智能指针在防止内存泄漏中的作用。同时,文章提到了引用作为安全的指针替代品,以及内存分布和RAII原则。
摘要由CSDN通过智能技术生成

简介

  • 为何重学C++
    • 大学没学好,遗憾
    • 会C++显得很厉害(性能为王)
    • 说不定能找个工作赚钱
  • 默认有代码基础,不然后面的看不太懂
  • 理论和实践相结合是最好的,第一遍不懂是可以的,多重复几遍是必须的
  • 应用领域:
    C++应用
  • 重学路线:
    • C++基础语法
    • C++基本句法
    • C++高级语法
    • C++编程思想
    • C++高效编程
    • 做一个桌面应用

注:跟着大牛学,少走弯路,不是自己看书走火入魔,驾鹤…
编程环境:vs2019,要会基本的调试

  • CPP历史
    • 最早的C++是带类的C,方便面向对象编程,可以称作C语言的增强版,1983年正式更名C++
    • 1998年STL标准库出现,带来很多新的功能和特性
    • 2011年,完成了新的标准C++11,算是新的起点
  • 什么是C++擅长而C语言做不到的
    • 两份代码:
    #include "stdafx.h"
    #include "stdio.h"
    
    // C语言版,面向过程
    void test(char* s){
    	printf("%s\n", s);
    }
    
    // C++版,面向对象
    class Test{
    public:
    	void print(cahr* s){printf("%s\n", s);}
    } 
    
    • C语言需要添加全局变量和全局函数处理事务,即难以扩展
    • C++可以有效的管理资源
      • 强大的抽象封装能力,可以开发大型工程
      • 高性能,运行快
      • 低功耗,微型嵌入式设备
      • 语法复杂(崇尚自由),细节较多(需要一些好的规范和范式,便于维护)
      • 要求对内存和CPU理解较为深入

基础语法

  • 语言层次和类型
    语言层次
  • C++的执行过程
    • 编译——汇编——链接
      执行流程

数据类型

  • C++是强数据类型语言
  • 数据类型决定变量所占内存空间的大小和布局方式,内存布局是学习C++必须掌握的(基础知识:计算机基础专栏)
    C++数据类型
  • 常见数据类型的定义
    char a[10] = "a";
    short int s = 97;
    int m = 97;
    long int n = 97;
    float f = 97.0f;
    double d = 97.0;
    long double k = 97.0bool b = true;
    wchar_t w[10] = L"a";
    
  • 通过IDE查看内存布局
    vs调试

    常用快捷键
    F5:开始执行/调试
    F11:单步执行
    Ctrl+K+C:注释
    Ctrl+K+U:取消注释

  • 标识符和关键字就不再单独介绍,用到时背会

变量与常量

  • 变量要有一个名字,并且要规定数据类型
    命名规则
  • 常量,即在程序运行过程中,其值保持不变的量,有两种定义方式
    #define PI 3.14159
    const double PI = 3.14159
    
    • 尽量使用const,因为#define不会出现在编译器(预处理),很难排错
  • 整型常量
    整型const
    	/*整型常量举例*/
    	212		// 合法
    	215u	// 合法
    	078		// 非法,8不是八进制
    	032UU	// 非法,后缀不能重复 
    	// 多以十进制和十六进制
    
  • 布尔常量
    布尔常量
  • 字符常量
    字符常量

运算符表达式

  • 运算符包括:算术、关系、逻辑、赋值、位、移位运算符、杂项运算符
  • 如果有编码基础,在C++中的写法即可
    • %++--
    • ==!=
    • &&||!
    • +=%=/=|=^=
    • &|^,用于二进制,双目运算符
    • >><<,示例:
      位&移位
    • 计算机运算采用二进制补码,符号位可直接参与运算
      • 原码—>补码:符号位不变,其余取反+1
    • 字节序
      • 大端方式:数据的高位放在内存的低地址(适合人看,从高位开始读嘛)
      • 小端方式:数据的低位放在内存的低地址(适合机器处理),Intel
    • 移位
      • 左移:低位补0,移n位等于原来的数值乘以2的n次方
      • 右移:逻辑右移补0(无符号),算数右移负1正0
      • 所以说带符号数尽量左移 ,否则可能会出错
  • 记一下这几个值(B2T是自定义二进制转十进制)
    二进制数
  • 实际场景中注意整型和浮点型的转换
    int A = 10, x = 0;
    x = 15.0 / A;
    cout << x<<typeid(x).name() << 
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值