
C/C++
止步听风
这个作者很懒,什么都没留下…
展开
-
C++ 中的异常抛出和捕获
在 C 语言中,如果发生错误,上级函数要进行出错处理,层层上传,容易造成过多的出错处理代码,并且传递的效率比较低下。C++ 中的异常C++ 中,异常的引发和异常的处理不必处于同一个函数中,因此底层函数可以着重于解决具体问题,而不必过多的考虑异常处理 异常是专门针对抽象编程中的一系列错误处理的,遇到错误信息就转到若干级之上进行重新尝试 异常脱离于函数机制,决定了其对函数的跨越式回跳语法...原创 2020-05-07 22:48:46 · 2629 阅读 · 0 评论 -
C++ 中的文件 IO 流
文件流类与文件流对象C++ 中对文件的操作是由文件流类完成的 通过文件流类可以将文件和流联系起来 文件流类分为输入流,输出流和输入/输出流 再对文件进行操作之前,需要将文件流说明为 ifstream,ofstream 或者 fstream 的对象文件操作过程在 C 语言中,对文件的操作步骤为:打开文件 进行读写 关闭文件而在 C++ 中,对文件的操作步骤为:定义文件流...原创 2020-05-07 21:31:18 · 434 阅读 · 0 评论 -
C++ 中的 IO 流简单使用
之前我们提到过,在 C 语言中,使用 scanf,printf 等函数实现输入和输出,但是在 C++ 中则是采用了 cin,cout以及流操作符进行输入和输出操作。IO 类但实际上不管是 cin 还是 cout,两者都是类对象,主要的类的继承关系为:而在 iostream 中已经事先定义了 cin,cout,cerr,clog 等对象,因此能够在包含头文件和声明命名空间之后直接使用...原创 2020-05-07 16:01:10 · 568 阅读 · 0 评论 -
C++ 中的模板概念和使用方法
C++ 的语法相比较于 C 语言的语法有所改变,并且增加了面向对象的思想。在 C++ 的面向对象设计中,封装,继承和多态是三个比较重要的概念。除此之外还有一部分很重要的内容,就是 STL 了。而 STL 的实现就是依托于模板实现的。STL 实现最初是为了泛型编程(Generic Programming),泛型编程是为了能够使程序能够适应于多种数据类型。而泛型编程也需要依托于模板。从上边的简...原创 2020-05-07 11:31:38 · 380 阅读 · 0 评论 -
C++ 中的多态实现和使用方法
都说 C++ 是面向对象的语言,其中的面向对象主要包括三部分:继承,封装,多态。继承和封装我们之前就简单介绍过,这里主要对多态的使用方法做一个简单说明。赋值兼容赋值兼容说的是在使用基类对象的地方可以使用公有继承类的对象来代替。赋值兼容是一种默认的行为,不需要进行显式转换就能够实现。就比如在派生类拷贝构造函数的参数初始化列表中,我们会直接使用派生类对象作为基类拷贝构造函数的参数,而不会报...原创 2020-05-06 22:46:27 · 1927 阅读 · 0 评论 -
C++ 中的继承方式和使用说明
定义继承,是从已经存在的类中获得属性,再此基础之上添加自己属性的过程。原有的类成为基类或父类,产生的新类则为派生类或子类。class deriveClass:deriveMode baseClass{ statement;}当然也可以从多个基类中进行派生,此时叫多重继承。从一个基类中进行派生,称为单继承。继承方式有三种继承方式:public,protected,p...原创 2020-05-06 00:01:24 · 779 阅读 · 0 评论 -
C++ 中的运算符重载及其使用
在之前的文章中,我们简单介绍过运算符重载。运算符重载其实也算是一种函数重载,只是该函数可以用下边的两种形式实现调用:operator x(argument);... x ...;上边的形式中,x 表示运算符。其中第二种形式严格来说不太对,应该你不知道运算符的类型,因此只表示一种形式。运算符重载定义datatype operator x(argument){ st...原创 2020-05-02 18:52:29 · 2194 阅读 · 0 评论 -
C++ 中的友元概念和使用方法
C++ 借用类的概念实现了封装的概念,使得对外提供接口,对内开放数据的想法得到了实现。但是如果在类外定义的函数需要访问类内的数据成员,并且类的数据成员一般会被设定为 private,因此就会被拒绝访问。此时就需要使用友元的概念。友元借由友元(友元函数和友元类),可以提高程序的运行效率(减少类型的安全性检查和调用的时间开销),但是某种程度上会破坏掉类的封装性。也就是说友元能够使原来不属于类的...原创 2020-05-01 15:03:33 · 1115 阅读 · 0 评论 -
C++ 中的类和对象及其相关概念和用法
先用一个例子简单对类和对象有个概念:// main.cpp#include <iostream>#include "myclass.h"using std::cout;using std::endl;int main(){ MYSTACK ms(20); for(int i = 0;i < ms.length();i++) m...原创 2020-05-01 00:07:02 · 384 阅读 · 0 评论 -
C++ 中封装的含义和简单实现
其实封装并不是编程中的一个思想,对于很多领域来说都是这样。对于电子器件来说,我们不关心其内部的结构,只在乎该器件能够实现什么样的功能。这样对于顾客来说,不用花时间研究内部的实现过程,而对于商家来说,也可以更好的保护它们的商业秘密。而对于 C++ 来说也是这样,借由数据类型也可以实现封装。这样做的好处就是对外屏蔽了功能实现,对内开放了数据权限。C++ 中的类和对象是经由 C 中的 struc...原创 2020-04-29 14:20:18 · 4429 阅读 · 0 评论 -
C++ 中的 namespace 使用和注意事项
在上篇文章中提到了 C++ 中的 namespace,出现了一些奇怪的现象,这里我们以三段程序引出我们要讨论的问题。代码段1:为了避免命名空间中的变量和当前作用域中的变量同名发生冲突,我们一般会这样使用命名空间:#include <iostream>#include <string>using namespace std;namespace fir...原创 2020-04-27 23:12:40 · 1924 阅读 · 2 评论 -
从 C 到 C++ 的一些不同
之前大致对 C 语言的内容进行了学习,这里试着了解一下 C++。如果我们用过 C++ 编过程序,会发现如果将只属于 C++ 的部分刨掉之后,剩下的东西好像都差不多。也就是说,C++ 是能够兼容 C 语言的,但是 C++ 相较于 C 语言也有些不同。类型增强类型检查// C_language#include <stdio.h>int main(){ co...原创 2020-04-27 13:38:09 · 291 阅读 · 0 评论 -
C 语言中的函数(补充)
本文是对之前文章的一个补充。在之前的文章中,我们主要说明了函数的调用和传参情况,这次主要是说明函数和指针的关系。函数返回值我们都知道函数只存在返回值,但是有时我们需要两个返回值,比如在 MATLAB 可以同时获得多个返回值,而在 C 语言中则可以借用指针来返回多个参数。比如返回堆上的连续空间,或者函数的实参本身就是指针等。函数指针函数本质我们都知道程序或者代码都需要加载到内...原创 2020-04-16 13:16:55 · 484 阅读 · 0 评论 -
C 语言中的指针(补充)
本文是对之前文章的一个补充。首先我们知道:& 运算符后加变量名就变成了变量名的地址,& 可以称为取地址运算符 变量地址前加 * 运算符就能够访问到变量,* 可以成为取内容运算符 地址一般是用存储空间的第一个字节的地址表示变量地址,即低字节地址 地址也是有大小的指针和指针变量指针最纯粹的指针可能就是 (void *),也就是用 malloc 函数在堆上申请内存...原创 2020-04-15 23:49:57 · 274 阅读 · 0 评论 -
C 语言中的数组(补充)
本文是对之前文章的一个补充。首先我们知道,数组一般会存在三个要素:起始位置 单个元素的字节长 范围在之前文章中提到的内容这里就不再说明,直接说明补充内容。一维数组访问方式数组名作整体访问用数组名作整体访问一般出现在两种情况:求数组大小 取地址也就是说在上边两种情况中,数组名才能代表整体。#include <stdio.h>int main...原创 2020-04-15 19:00:35 · 304 阅读 · 0 评论 -
C 语言中的进程空间(补充)
本文是对这篇文章的一个补充。首先我们知道:程序是静态的 源码经过预处理、编译、汇编、链接变成可执行文件,该可执行文件可以认为就是程序 可执行文件能够多次执行,但并不意味着每次使用的资源是一样的 进程是动态的 当程序加载到内存中开始运行,直到运行结束,这样从开始到结束的过程就是进程 程序位于存储设备上,此时不叫做进程,当加载到内存上开始执行才转变为进程进程空间上图给出了...原创 2020-04-15 14:37:56 · 333 阅读 · 1 评论 -
C 语言中的数据类型(扩充)
该篇文章是对之前文章的一个补充。首先,在计算机中内存是线性的 内存是以字节为单位进行编址的,内存中的每个字节都对应一个地址 程序的执行过程中,数据都要保存到内存当中而数据是有类型的,计算机会根据数据类型分配连续的一段内存作为数据的存储空间,也就是说利用数据类型,就沟通了内存大小和数据之间的关系。数据类型与内存的关系数据类型表示数据申请的内存单元大小和访问的规则,表示了数据在内...原创 2020-04-14 23:40:53 · 818 阅读 · 0 评论 -
C 语言中的条件编译
之前我们说过,源程序需要经过预处理、编译、汇编、链接才会变成可执行程序,预处理阶段完成的是预处理操作,本质上是一种替换操作。宏不带参宏宏常量宏常量是用 #define 定义的宏,只能在一行内表达,如果要在多行内表达,则需要加上连接符\。比如:#define PI 3.14宏常量很多情况下可以用来定义文件路径。但要记住:宏只是简单的替换操作宏类型有时候,也会用宏来...原创 2020-03-07 00:00:50 · 278 阅读 · 0 评论 -
C 语言中的位操作
在单片机或是工业控制中,位操作是很常见的,利用单片机实现跑马灯的实例就可以通过位操作来实现。C 语言中也能够实现位操作。位操作符微操作是针对数据的二进制补码形式的操作,位操作符主要有:位运算符 含义 & 与 | 或 ~ 非 ^ 异或 << >> 左移 右移 &= |= ^= &...原创 2020-03-06 21:43:19 · 507 阅读 · 0 评论 -
C 语言中的文件
有时候我们需要使用 C 语言读取外部文件中的数据,或者是将计算处理后的结果写入到外部文件中,这时候就需要对文件的操作了。文件流C 语言在处理文件的时候是将文件看成了字符的序列,也可以说成是字符流或者是文件流。也就是说不同的文件可能只是文件内容的组织格式不同,但是交给计算机处理的时候都是大致相似的。文件类型不同的文件有不同的类型,详细的可以看这篇文章乱码问题对于某个文件来说,...原创 2020-03-06 12:59:18 · 1091 阅读 · 0 评论 -
C 语言中的共用体和枚举
和结构体一同出现的一般还会有共用体和枚举类型,这三者的语法格式相同,不同的只是使用的情境不同。共用体共用体能够将不同类型的变量存放到同一段内存单元,这也就是 union 的由来。定义...原创 2020-03-04 21:30:00 · 381 阅读 · 0 评论 -
C 语言中的 typedef 和 #define
有时候为了代码的可移植和跨平台的开发,或者是为了缩短书写字符,会使用 typedef 进行类型重命名。typedef作用用自定义名称为已有数据类型命名。定义为:typedef datatype name;使用方法为了便于记忆,可以归纳为步骤: 先用已有类型定义一个变量 在定义语句类型前加 typedef 将变量名换成自定义名称 ...原创 2020-03-04 11:40:27 · 215 阅读 · 0 评论 -
C 语言中的结构体
写点什么呢?原创 2020-03-04 11:05:23 · 650 阅读 · 0 评论 -
C 语言中的内存管理
进程空间进程和程序源码是静态的 源码经过预处理、编译、汇编、链接变成可执行文件,该可执行文件可以认为就是程序 可执行程序能够多次执行,但并不意味着每次使用的资源是一样的 进程是动态的 当程序加载到内存中开始运行,直到运行结束,这样的一个过程就是进程 程序位于存储设备上,此时不叫做进程,当加载到内存上开始执行才转变为进程进程空间图内存的布局大概如同下图所示:栈内存(s...原创 2020-02-27 11:38:56 · 247 阅读 · 0 评论 -
C 语言中的字符串
在程序设计中,不止会用到数值和字符,也要用到字符串。甚至还可以说,字符串在程序设计中还扮演着比较重要的作用。字符串常量C 语言中提供了字符串,但是并没有提供字符串类型。但这并不意味着不能够使用字符串。字符串表示通常我们会用 “” 来表示这是一个字符串,实际上用 “” 括起来的部分可以认为是字符串常量。字符串长度通常情况下,字符串长度要比 “” 中间的字符数目多一个,多出来的...原创 2020-02-26 23:40:39 · 970 阅读 · 0 评论 -
C 语言中的变量作用域及修饰符
写点什么呢?原创 2020-02-26 19:29:04 · 678 阅读 · 0 评论 -
C 语言中的函数
有时候,我们可能需要使用一些 API 或者自定义一些功能实现,这些都是通过函数实现的。其实函数在日常的程序编写中使用频率还是比较高的,使用函数主要由几个好处:程序的可读性强 利于程序维护 提高了代码的移植性 提高了程序开发的效率C 标准库及普通库函数对于一些使用频率比较高的功能来说,库帮我们实现了这些功能,并给出了函数接口,其它用户可以简单的通过程序调用就能够实现这部分功能,从而节...原创 2020-02-25 23:18:57 · 207 阅读 · 0 评论 -
C 语言中的指针
指针可以说是 C 语言中比较重要的内容了,跟很多方面都存在联系。这里对 C 语言中的指针部分做个小总结。内存和指针的关系内存是线性的 内存是以字节为单位进行编址的,内存中的每个字节都对应一个地址 程序的执行过程中,数据都要保存到内存当中 数据是有类型的,计算机会根据数据类型分配连续的一段内存作为数据的存储空间 指针存储的是指向数据的地址变量地址& 运算符后加变量名就变...原创 2020-02-25 09:14:21 · 235 阅读 · 0 评论 -
C 语言中的数组
当需要定义多个相同的变量或者描述同一类相同的东西时,可以使用数组来进行定义。一维数组一维数组中的“一维”是相对与“二维”来说的,主要用来描述线性化的数据序列。声明定义:数据类型名 变量名[正整数];需要注意的是,数组占用内存的数量:#include <stdio.h>#include <Windows.h>int main(){...原创 2020-02-21 19:50:52 · 319 阅读 · 0 评论 -
C 语言程序结构
顺序结构分支结构循环结构程序跳转原创 2020-02-21 09:01:57 · 239 阅读 · 0 评论 -
C++ 语言中的运算符与表达式
运算符优先级原创 2020-02-20 23:13:07 · 529 阅读 · 0 评论 -
C 语言中的常变量和数据类型
关键字(保留字)char short int long float double if else return do while for switch case break continue default goto sizeof auto register static...原创 2020-02-20 20:40:09 · 1165 阅读 · 0 评论 -
C语言源程序怎么到可执行程序
源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c...原创 2020-02-12 20:49:44 · 3830 阅读 · 0 评论 -
C/C++ 中如何实现让控制台暂停
在程序调试的时候,有时控制台会出现闪烁之后又消失的情况,对于控制台中出现的结果可能看不到,此时就需要有一种方法使控制台在输出之后保持暂停。目前主要有一下几种方法:#include <stdlib.h>system("pause");这种方法可以直接使控制台暂停,并在控制台最后一行显示(请按任意键继续. . .)的标志。此时,在键盘上敲击任意键后,程序继续执行。#inc...原创 2019-11-08 16:48:17 · 8459 阅读 · 0 评论 -
标准 C 字符和字符串常见函数
atof()语法:#include <stdlib.h>double atof( const char *str );功能:将字符串str转换成一个双精度数值并返回结果。 参数str 必须以有效数字开头,但是允许以 “E” 或 “e” 除外的任意非数字字符结尾。示例:x = atof( "42.0is_the_answer" ); //...原创 2019-11-08 16:10:34 · 295 阅读 · 0 评论 -
C++ 中怎么结束 while (cin>>str) 的输入
cin当从键盘上进行输入并按下回车时,输入的字符就会被送到输入缓冲区进行存储,且以空白字符为分隔符。window 下如果本行存在输入字符的情况下,在行尾加 ctrl+z 并且回车之后并不会结束输入,而是将 ctrl+z 当作一个字符来解释,将该字符当作普通字符缓冲并输出。要结束输入需要在新行(即输入完成之后回车到新行)之后,输入 ctrl+z 并回车结束输入。linux 下...原创 2019-11-07 08:37:53 · 5054 阅读 · 0 评论 -
C++ 单引号和双引号的区别
单引号是字符型变量值,代表 ASCII 码中的一个值,根据不同的输出方式可以为整数或是字母。双引号是字符串型变量值,代表一个字符串。给字符串赋值时,系统会自动给字符串变量后边加上一个 “\0” 表示字符串结尾。而变量名字代表的是该字符串的起始指针。'0' // char"0" // string "0\0"...原创 2019-11-04 11:24:37 · 2213 阅读 · 0 评论 -
C++ 中 cin、cin.get()、cin.getline() 的区别
cin不接受white space(包括空格、制表符和换行符)且以 white space 为分隔符;使用 white space(包括空格、制表符和换行符)来确定字符串的结束位置,这意味着 cin 在获取字符数组输入时只能读取一个单词;读取单词后,cin 将该字符串放到数组中,并自动在结尾添加空字符。cin.getline()读取行,通过回车键输入的换行符来确定输入结尾,读...原创 2019-10-12 22:35:05 · 444 阅读 · 0 评论