C++ primer plus

张开发
2026/4/7 16:24:32 15 分钟阅读

分享文章

C++ primer plus
C Primer死磕1、预备知识面向过程编程泛型编程编写一些通用模板减少重复代码。面向对象编程OOP包括两个核心概念类Class和对象Object形象理解一下这两个核心class——脑中概念/纸上设计图。类包含两个部分属性--数据成员-是什么行为--成员函数-能干什么Object——根据设计图制造出的实体占据实际空间可以执行任务。程序创建——编程步骤一直很好奇不同的系统有什么区别都用windows不行吗装逼当然我想肯定不是特性Windows (家用轿车)Linux (全能工具车/装甲车)macOS (精装跑车)设计逻辑为普通用户设计图形界面友好隐藏了所有底层细节。为开发者设计极致的自由你可以修改系统的任何一行代码。为创意和开发平衡设计既有漂亮的界面又有类 Unix 的底层。软件生态游戏、办公软件、专业工程软件如 Altium Designer最强。编程开发工具、服务器软件、科学计算、AI 训练最强。平面设计、视频剪辑、iOS/Mac 应用开发唯一选。权限管理系统经常“自作主张”比如自动更新、杀毒软件乱删文件。你是最高统治者。没有你的命令系统绝对不会乱动。相对封闭但安全底层对开发者非常友好。2、开始学习C初始编译iostream设计程序与外部世界之间的通信io指的是输入与输出std表示一个名称空间内部包含cout\cin、endl等cout 文本;//表示将右边的东西传给coutendl作为控制符表示光标重启一行如果显示字符串时需要包含换行符\n,而不是endl;\n(转义字符)仅仅代表一个换行符。它告诉输出设备“请把光标移到下一行”。endl(操纵符)它做了两件事插入一个换行符\n。强制刷新缓冲区 (Flush)。#include iostream int main() { using namespace std; //std相当于一个工具箱 这里面有cout cin等相关工具 cout Come up and C me some time.; cout endl; cout You wont reget it! endl; return 0; }C没有限制变量声明一定要位于函数或者过程的开始位置。不同的数据类型占用的字节数根据编译器和操作系统架构的不同占用字节数往往不一致64位windows环境-不同数据类型占用字节数数据类型关键字占用字节 (Byte)典型取值范围 / 精度布尔型bool1true 或 false字符型char1-128 到 127 (ASCII 码)短整型short2±3.2×104整型int4±2.1×109长整型long4Windows 下同 int超长整型long long8±9.2×1018单精度浮点float46-7 位有效数字双精度浮点double815-16 位有效数字长双精度long double8 或 12/16VS2022 中通常与 double 相同使用cin以及cout#include iostream int main() { using namespace std; int carrots; cout How many carrots do you have?\n; cin carrots; cout Here are two more\n; carrots carrots 2; cout Now you have carrots carrots. endl; return 0; }类简介类——用户定义的一种数据类型类定义描述的是数据格式及其用法而对象是根据数据格式规范创建的实体。类与对象 类型与变量比如iostream中 ostream就是一个类其中包含cout对象;而istream也表示为一个类包含cin对象函数原型只描述函数接口函数定义包含详细代码编程练习#include iostream using namespace std; int main() { string name,address; cout 请输入您的名字; cin name; cout \n; cout 请输入您的地址 ; cin address; cout \n; cout 名字 name 地址 address endl; return 0; }#include iostream using namespace std; int Disance(int a); int main() { int mashu; cout 请输出以long为单位的距离\n; cin mashu; cout 转换后的mashu: Disance(mashu) endl; return 0; } int Disance(int a) { return a * 220; }都比较简单 就不弄了3、处理数据关于C变量的命名规则、变量基本类型-整型与浮点型、存储的基本属性信息存储在哪里要存储什么值存储何种类型的信息运算符sizeof与头文件climitsC语言采用#define编译指令创建符号常量C使用关键字const比较多整形字面值C可以以三种不同的计数方式来书写整数即十进制、八进制0开头、十六进制0X开头特性ASCIIEBCDICUnicode (UTF-8)诞生背景早期美国标准IBM 大型机专用全球通用标准字符数量128 个256 个110 万 个主要用途基础开发、系统底层遗产系统银行、保险现代网页、操作系统、多语言软件兼容性基础孤立向下兼容 ASCII嵌入式建议首选内存占用极低不建议按需使用处理中文时必须用cout.put();类ostream有一个put()成员函数用来输出字符。转义序列的编码wcha_t——宽字符类型表示扩展字符集输入输出采用wcin和wcout处理define与const限定符区别#define和const都能用来定义常量#define-宏定义是“文字替换”而const是“带类型的变量”#define是由预处理器在代码正式编译之前处理的。原理它是简单的字符串替换。编译器还没开始干活预处理器就把代码里所有的宏名换成了对应的值。特点没有类型预处理器不关心它是整数还是浮点数。没有作用域一旦定义整个文件后面都能用容易造成命名污染。不占内存空间它直接把值嵌入到指令流中。const是由 编译器 处理的它是一个真正的变量只不过它的值在初始化后不能被修改。原理它是带类型检查的常量。特点有类型编译器会检查类型是否匹配比如你不能把一个字符串const赋值给int。有作用域遵循 C 的变量规则比如可以定义在函数内部只在该函数内有效。可以调试在 VS2022 调试程序时你可以看到const变量的值但看不到#define的值。特性#define (宏)const (常量)处理阶段预编译阶段编译前编译阶段类型检查无容易出错有更安全内存分配简单的替换不占存储单元可能会分配内存空间作用域控制全局有效直到#undef遵循正常的变量作用域调试支持很难调试符号表中没有可以正常调试强制类型转换运算符 static_castauto声明——C语言关键字能够根据初始值的类型推断变量的类型复习题1、为什么C有多种整型答1适配不同的硬件能力在内存只有几KB的传感器控制器上存储的内容受到限制2在速度上、容量上之间寻找平衡3历史兼容性C继承于C语言short a 80;unsigned int b 42110;long long int c 3E9LL;丰富的类型类型、climits库--查看各种类型的最大最小值、列表初始化{}报错提醒33L 表示该值是long int类型而33是int类型等价的都是将65、‘A变成十进制651通过cout的自动识别-直接赋值int code 88;char ch code;coutch;(2)强制类型转换cout static_castchar(88);前者不会导致舍入误差、后者会导致舍入误差ps:看的太枯燥看个视频学习吧11 数组_哔哩哔哩_bilibili4、复合类型4.1数组用于存储多个同类型的值定义格式类型 数组名[元素个数];int arrs[10];//如果没有赋初值即一开始对应的是一些随机值类型 数组名[元素个数] {初值表逗号分隔};double ks[3] {1.0,2.3,20.0};short sarray[10] {1,3,4};//后续未设置的初值均为0数组元素表示数组名[下标] 如arrs[4]C编译器不会检查下标的合法性4.2字符串C风格的字符串譬如字符串“programming” 不是包含11个字符而是12个字符以\0’结尾的一串字符\0’称为空字符占用一个字节的空间存储采用数组保存字符串输出与输入针对于字符串输入是以空白字符作为输入结束标记即采用getline或者get来输入一行get的优势可以获取get函数结束原因是因为读取到换行还是达到数组长度。4.3 string类简介专门处理字符串的类似-string类复制、拼接等操作头文件名string在名字空间std中变量定义字符串复制、拼接4.4结构简介将描述一个复杂对象的多个部分组合成一个整体结构的使用建立结构声明struct book{ char title[MAXTITLE]; char author[MAXAUTL]; float value; };声明结构变量访问结构变量结构体变量名.成员名结构中的位字段结构成员可以只占若干位可用于访问硬件设备上的寄存器状态字4.5共用体共用体union——存储不同的数据类型但是同时只能存储其中一种类型。与结构体不同的是不能同时使用共用体内的数据格式所有变量都挤在同一个房间里共用同一块内存地址。节省空间和重新解释数据。4.6枚举enum 创建符号常量代替const4.7指针和自由存储空间指针值为内存地址的变量用途提供间接访问定义指针变量类型名 *指针变量名如 int *p;运算符一元运算符运算对象是变量运算结果是变量的地址int a;p a; //将变量a的地址 存入到指针变量p中间接访问运算符*一元运算符运算对象是指针运算结果是指针指向的变量注意事项1不要使用初始化的指针2不要直接给指针赋一个整数内存地址是不知道的除非已知。3不同类型的指针之间不能赋值。动态内存分配在程序运行时申请内存和释放内存的功能1、动态内存申请在内存寻址一块大小合适的空间返回起始地址。2、内存释放通过变量声明获得的内存会在存储器结束时收回。动态申请的空间不会被系统主动收回。那这个怎样释放呢delete 指针delete []指针 //数组指针注意内存泄露4.8指针、数组和指针算术1、指针运算1可以执行加减运算指针加/减1是加/减上指针基类型的长度指针与字符串指向字符的指针const的值不能改变 strlen() //计算不包含/0的占用大小4.9类型组合动态结构运行时通过new申请一个动态的结构变量申请动态结构结构指针 new 结构类型4.10数组的替代品4.11总结4.12复习题5.循环和关系表达式5.1 for循环5.2 while循环5.3 do while循环5.4 二维数组与嵌套循环6. 分支语句和逻辑运算6.1 if语句6.2 逻辑表达式6.3条件表达式6.4 switch语句6.5 文本文件的输入输出6.6 文件概念碎碎念记录今天一个嵌入式技术跟我说你这指针用的怎么样我一五一十的说用的不多之前也考过C语言但那个毕竟也比较简单指针那一块看的蛮复杂也没细看。用在编程上就更别说了然后小哥给我推荐看C指针的书以及网上找嵌入式项目自己跟着做。这也确实是我一直想深入的部分总因为这因为那没开始。小哥跟我说他两天看完了这个C primer我看了一眼1605页怎么看完的。总归今天一个多小时的交流可以说是请教我深刻感受到了自己的不足。要开始好好提升了对于今后的工作也好技能提升也好该下点功夫了。(20260313)精华总是在最后20260407-中间断断续续好久才从昨天重新开始好好过第四章基础不强直接啃书一点进不去脑子还是得视频搭配。这电子书还是盗版的拉的很。继续希望这周能学的差不多。今天预计学完第4、5、6章。

更多文章