08 2018 档案

摘要:函数,简单的讲就是一个有名字的代码块。 在第一篇共读中我们就介绍到了main,它就是一个函数。 在这里已经清楚的极少了函数的基本组成部分: 返回值类型、函数名称、函数参数列表、函数体 在调用函数的时候我们通过调用运算符()来进行调用。 函数调用的两个步骤: 一、 用实参初始化对应的形参 二、 将执行 阅读全文
posted @ 2018-08-31 09:53 chattyku 阅读(172) 评论(0) 推荐(0)
摘要:异常,程序检测到当前的情况超出它的处理能力的时候将跑出异常。 比如常见的异常有除零问题,数据库连接丢失输入需要数字的情况下给出了字母输入 典型的异常处理包含以下几个部分: try块,将可能发生异常的语句置于try块中,catch 括号中的参数时一个异常类型,通过类型的不同来判断不同的异常 异常并不是 阅读全文
posted @ 2018-08-31 09:13 chattyku 阅读(226) 评论(0) 推荐(0)
摘要:在C++中一共存在四中跳转语句: break continue goto return return代表返回当前函数,这个之前已经有了介绍,接下来我们介绍其他3个跳转语句的作用。 break:简单的将就是跳出当前的while、do while、for 或 switch 语句块范围。然后继续执行其后的 阅读全文
posted @ 2018-08-30 10:00 chattyku 阅读(250) 评论(0) 推荐(0)
摘要:本节介绍的是迭代语句,也就是循环语句。 循环语句的运行特点是在判断条件为false之前一直进行循环体内的操作一遍一遍的重复执行。 介绍一下几种形式: 上面的示意代码是四种不同的循环(迭代)形式的语法。 下面通过一个遍历的程序来分别看一下如何使用这些循环的形式。 阅读全文
posted @ 2018-08-30 09:13 chattyku 阅读(284) 评论(0) 推荐(0)
摘要:条件语句,又称为流程控制语句,是变成过程中,代码分支所必须的。 用来表现逻辑结构的分支。 条件语句共有以下几种: if语句 它的完全展开形式如下: 代码运行过程也很简单。 从上到下判断每一个条件,如果符合条件则执行相应的statment,如果都不符合,则执行最后else部分的statment。 上面 阅读全文
posted @ 2018-08-29 09:18 chattyku 阅读(185) 评论(0) 推荐(0)
摘要:在if 、switch、 while 和for语句的控制结构内定义的变量只在其结构内部可见,超出结构范围将变为未定义。 以上演示了在作用域外使用变量将会变成未声明。 但是如果有同学使用vs2003版本的话,会发现并不会报错。 这是编译器的bug,虽然有时候会被程序员利用。 阅读全文
posted @ 2018-08-29 08:43 chattyku 阅读(194) 评论(0) 推荐(0)
摘要:在上面的代码中,第一条语句虽然执行了加法,但是没有产生任何实际的效果,参与运算的值在运算前后没有变化,运算的结果也没有被使用而是被丢弃掉。 最简单的语句 空语句是C++中最简单的语句 它使用一个单独的分号来表示 空语句并不是没有用处的,在语法上需要一个语句,但是逻辑上不需要它的时候我们可以使用空语句 阅读全文
posted @ 2018-08-28 09:43 chattyku 阅读(161) 评论(0) 推荐(0)
摘要:https://download.csdn.net/download/sinjing/10630455 excel表格文件请移步该地址下载 阅读全文
posted @ 2018-08-28 09:29 chattyku 阅读(134) 评论(0) 推荐(0)
摘要:有时我们希望对象显示的转换为另一种类型。 比如在上述代码中,我们希望能够执行double类型的除法。 强制类型转换 static_cast<type>(val) 不包含底层const具有明确定义的类型转换,都不可以使用该转换符 用于找回存在于void*中的指针类型 上述类型转换常见于线程函数中对入参 阅读全文
posted @ 2018-08-27 09:54 chattyku 阅读(109) 评论(0) 推荐(0)
摘要:先来看一个例子 C++规定运算的类型必须是一样的,而这个表达式中两个运算常量的类型却不同。 这个时候就需要通过类型转换来完成运算。 这里的运算会变成如下: 上述表达式运算出结果然后再将结果转换为int型赋值给变量ival 而上述的运算转换过程中不需要程序员参与,甚至不需要了解。这种转换被称为隐式转换 阅读全文
posted @ 2018-08-27 09:30 chattyku 阅读(148) 评论(0) 推荐(0)
摘要:逗号运算符 含有两个运算对象,按照从左向右的顺序依次求值。 和逻辑与、逻辑或以及条件运算符一样,逗号运算符也规定了运算对象求值的顺序。 对于逗号运算符来说,首先对左侧的表达式求职,然后将求职结果丢弃掉。逗号运算符真正的结果是右侧表达式的值。 如果右侧运算对象是左值,那么最终的求职结果也是左值。 逗号 阅读全文
posted @ 2018-08-20 09:18 chattyku 阅读(131) 评论(0) 推荐(0)
摘要:返回一条表达式或一个类型名字所占字节数。 我们之前经常强调指针在使用前需要初始化。 这里给大家说一个特别的例子,sizeof计算指针指向对象的时候是否初始化并不会有问题产生。 1.对char或者类型为char的表达式执行sizeof运算,结果得12.对引用类型执行sizeof运算得到被引用对象所占空 阅读全文
posted @ 2018-08-20 09:02 chattyku 阅读(138) 评论(0) 推荐(0)
摘要:位运算符作用域证书类型的运算对象,并把运算对象看成是二进制位的集合 在位操作中,并没有明确规定如何处理符号位,所以建议操作无符号类型。 移位运算符 左移运算符(<<): 在右侧插入值为0的二进制位 右移运算符(>>): 如果操作数为无符号类型或为正数,则插入0,如果操作数为负数则依赖于环境,插入符号 阅读全文
posted @ 2018-08-19 12:27 chattyku 阅读(118) 评论(0) 推荐(0)
摘要:条件表达式,判断第一个表达式的真假,如果为真,返回冒号左侧的结果,如果为假返回冒号右侧的结果 (a> b ? a : b) 条件运算符的嵌套 阅读全文
posted @ 2018-08-19 11:44 chattyku 阅读(113) 评论(0) 推荐(0)
摘要:成员访问运算符: . 点运算符 -> 箭头运算符 因为皆因用运算符的优先级低于点运算符,所以执行解引用运算的子表达式两端必须加括号。 如果不加括号则含义会不同 阅读全文
posted @ 2018-08-19 11:31 chattyku 阅读(146) 评论(0) 推荐(0)
摘要:递增:++ 使用方法为 i++;或 ++i; 等价于 i = i + 1; 递减:-- 使用方法为 i--;或 --i; 等价于 i = i - 1; 前加和后加的区别在于是否是叠加后的值参与整体运算 前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。 如非必要尽量使用前置版 阅读全文
posted @ 2018-08-19 10:01 chattyku 阅读(186) 评论(0) 推荐(0)
摘要:赋值运算符的左侧必须是一个可修改的值(左值的一般情况) 赋值运算符满足右结合律,所以可以使用连等的方式进行赋值。 赋值运算符的优先级是比较低的,所以它一般左右才被计算。 这里需要提醒一点。赋值运算符和相等逻辑运算符千万不要弄混了,因为编译器检查不出这种错误。 这两个代码在编译过程中都是正确的,但是这 阅读全文
posted @ 2018-08-16 20:16 chattyku 阅读(137) 评论(0) 推荐(0)
摘要:逻辑关系,相信大家都不陌生,所有的逻辑和关系的运算结果只有两种:真(true)或假(false) 逻辑关系的运算符属性通过下表来列出 左 在所列出的所有逻辑与关系运算符中,优先级从上到下,以空行隔开的优先级相同。 逻辑与运算符(&&): true && true == true ; true && 阅读全文
posted @ 2018-08-16 20:02 chattyku 阅读(254) 评论(0) 推荐(0)
摘要:运算符的优先级 正号和负号优先级最好,然后是乘法、除法、求余、最后是加和减 算数表达式有可能产生未定义的结果,原因有二: 一、数学性质本身的限制,例如除零 二、计算机特性, 数据溢出(当数值达到该类型无法表示的时候) 以下代码表示了一个溢出的结果 阅读全文
posted @ 2018-08-14 22:00 chattyku 阅读(113) 评论(0) 推荐(0)
摘要:基本概念 一元运算符: 作用于一个运算对象的,比如: &(取地址) *(解引用) ++(自增) --(自减) 二元运算符: 作用于两个运算对象的,比如: + (求和) -(求差) ==(逻辑等) 所有运算符中二元运算符居多。 三元运算符: 作用于三个运算对象的, a > b ? a : b; ([? 阅读全文
posted @ 2018-08-14 21:43 chattyku 阅读(227) 评论(0) 推荐(0)
摘要:C++中的多位数组,严格来说是数组的数组。 初始化多维数组 多维数组的下标引用 指针和多维数组 对于多维数组中二级元素的声明需要格外注意,当然我们可以通过auto来代替这种声明,或者使用typedef来进行一次声明多次使用。 本节内容的全部代码 阅读全文
posted @ 2018-08-13 19:55 chattyku 阅读(145) 评论(0) 推荐(0)
摘要:C风格的字符串是指以空字符‘\0’结尾的一个字符串。 这种字符串虽然在C++中兼容,但是极易引起内存安全问题,所以不建议使用。 但是作为一个语言特性,我们应该了解它,这样才能在碰到的时候做到心中有数。 3.5.4 C标准库string函数 这里所说的string函数并不是std::string的函数 阅读全文
posted @ 2018-08-13 19:23 chattyku 阅读(221) 评论(0) 推荐(0)
摘要:存放相同的类型,大小声明后不可改变,性能上优于vector。 数组声明 数组的元素会被默认初始化 数组的元素为对象,所以与vector相同,不存在以引用为元素的情况。 数组的显示初始化 字符数组应该具有零结尾 数组间是不允许使用“=”进行拷贝和赋值的。 一些复杂的指针,指针的数组,数组的指针,数组的 阅读全文
posted @ 2018-08-10 09:38 chattyku 阅读(234) 评论(0) 推荐(0)
摘要:容器的通用访问机制 迭代器。 迭代器的有效范围是 容器内容范围和容器结尾元素的下一个位置,其余都是无效的 从上图中可以看出一个迭代器的有效范围,当然不是所有的容器都是线性存储的,这里只做一个示意。 1. 使用迭代器 在上面的代码中,使用到了迭代器的头尾获取(begin()、end() ),迭代器的值 阅读全文
posted @ 2018-08-09 10:32 chattyku 阅读(237) 评论(0) 推荐(0)
摘要:vector 模版类型,用来保存任意类型,所以又称为容器。 一 定义和初始化 (1)默认初始化,长度为空 (2)列表初始化vector [C++11] (3)值初始化 二 Vector的常用操作 (1) 增加元素 (2)下标操作 本章内容代码汇总 在标准库中,很多操作都是相同的名称具有相同的语义, 阅读全文
posted @ 2018-08-08 10:36 chattyku 阅读(164) 评论(0) 推荐(0)
摘要:标准库string 其具体代表的类型为可变长的字符序列。 使用string时需要包含以下代码: 初始化string对象 大家是否注意到 s3和s5的值是一样的,但是写法却不一样。 这两个初始化的方式从结果上讲没有区别, 有区别的是初始化的过程: s3的写法叫做拷贝初始化,s5的写法叫做直接初始化。 阅读全文
posted @ 2018-08-08 09:36 chattyku 阅读(255) 评论(0) 推荐(0)
摘要:我们一直在写的std::cout 其中std就是一个命名空间 "::" 则是作用域操作符 std::cout 意思就是在命名空间std中寻找cout的定义。 使用using声明可以无需作用域操作符直接使用对应的对象 每个名字都需要有独立的using声明。 头文件中不应该出现using声明 因为头文件 阅读全文
posted @ 2018-08-07 09:26 chattyku 阅读(110) 评论(0) 推荐(0)
摘要:在C++中所有数据组合的类型都是自定义的数据结构。 包括我们常常使用的string、istream、ostream等。 一个简单的类型定义,以struct开头进行书写。 类内初始值的作用:创建对象时,类内初始值将用于初始化数据成员。 如何使用我们自定义的类型 运行结果: 以上我们的程序就已经基本完成 阅读全文
posted @ 2018-08-07 09:05 chattyku 阅读(195) 评论(0) 推荐(0)
摘要:对于一些难于理解的,不好被表述的类型,我们如何能够快速有效的传达我们的意思? 如果有以下这样一个数据类型,那么我们光声明一个迭代器类型就要写几十个字符 而且这样的写法不便于记忆,如果有两个类型一样但是作用不同的相同结构,那么可能就会出错 在这种情况下,我们可以使用类型别名, 本章内容主要有三个重要的 阅读全文
posted @ 2018-08-06 21:31 chattyku 阅读(113) 评论(0) 推荐(0)
摘要:const 用来修饰变量的不可改变性质。 比如缓冲区的大小,屏幕的尺寸,这种一般不会改变,但是会多出使用的东西 我们可以声明为const类型,以方便不会不小心被修改掉,另一方面在我们需要修改的时候会很方便 除过写的操作,const对象与非const对象没有 差别。 默认情况下const只在文件内部有 阅读全文
posted @ 2018-08-06 21:12 chattyku 阅读(150) 评论(0) 推荐(0)
摘要:C++的复合类型 引用和指针 引用就像是类型的别名 指针的初步认识 不管是否学过C或者C++对于指针这个东西只要是接触过计算机语言的,我相信都会对这个东西有所耳闻。 强大、底层、无限制、容易出错、容易崩溃、难以使用 让C/C++程序员又爱又恨的东西。 我认为,指针确实存在他的弊端,但是反过来想一下, 阅读全文
posted @ 2018-08-03 11:06 chattyku 阅读(202) 评论(0) 推荐(0)
摘要:定义方式为在类型说明符后紧跟一个或多个变量名 在我的文章中多次提到对象,一般而言,对象是指一块可以存储数据并有某种类型的内存空间。 也就是说,对象是有了实际地址的一个类型。 对象和类这个概念在初学的时候比较难理解,我举个简单的例子。 对象创建时获得一个特定的值,我们叫做初始化。 在C++中 初始化 阅读全文
posted @ 2018-08-03 10:02 chattyku 阅读(175) 评论(0) 推荐(0)
摘要:虽然C++中的类型是强制声明的,但是这并不意味着不同类型之间不可以进行一些计算或赋值。 我们来看下面的一组代码 上面的赋值语句中,没有一个是在把对应的值赋值给对应的类型。 但是并没有产生编译的错误,我们曾经说过,C++是一种强类型的语言。 这样胡乱的赋值感觉并不是强类型啊! 事情是这样的,类型指一个 阅读全文
posted @ 2018-08-02 22:56 chattyku 阅读(350) 评论(0) 推荐(0)
摘要:首先在这里要感谢我们无比伟大的祖先,给了我们汉字这样牛气冲天的东西。 所以计算机里的汉语也是很有故事的,今天来和大家聊聊这些事 先从哪里说起呢? 从汉字编码说起吧,当前计算机中使用的与中文有关的编码 GB2312-80:1980年颁布的国标, GBK:1995年颁布的国标,GB2312的一个扩展字符 阅读全文
posted @ 2018-08-02 17:03 chattyku 阅读(230) 评论(0) 推荐(0)
摘要:C++的数据类型是用来对内存的指定区域描述含义及可执行操作的。 有效数字:一个数学概念具体讲就是 从左边第一个不是0的数字起,到末位数止,这中间所有的数字都叫这个近似数字的有效数字 wchar_t、char16_t、char32_t都是用来放字符的,其实字符也很有意思,我会专门写一个篇外篇来讲述一下 阅读全文
posted @ 2018-08-02 11:32 chattyku 阅读(586) 评论(0) 推荐(0)
摘要:恢复内容开始 先将一段代码贴出,这段代码是结合描述和一些经验写出来的 但是代码并没有仔细的斟酌过,我们共同来分析一下 本次分析完全建立在我的个人经验之上,知识有可能超过关于本书中已经了解过的内容。 我将尽量使用地址是门槛的角度进行逐行的进行代码解析,以求尽量让更多的人能够看懂 这部分是一个防止头文件 阅读全文
posted @ 2018-08-01 11:03 chattyku 阅读(399) 评论(0) 推荐(0)
摘要:第一章的一个小结 完成一个书店程序 从销售记录中生成销售报告 销售报告包含 书籍的ISBN、售出册数、总销售额、平均售价 第一章的具体内容就结束了。 基础语言知识变量、流程、类等相关知识。 完成了一个具有一些实际意义的程序。 可能大部分没办法很好的理解,这里只是个引子,没必要太过纠结。 阅读全文
posted @ 2018-08-01 10:27 chattyku 阅读(164) 评论(0) 推荐(0)
摘要:在类的使用之前我们需要了解的三件事情: 1. 类名是什么 2. 它在哪里定义的 3. 它提供了哪些操作 每一个类都是一个新的类型,类名就是类型的名称。 假设我们现在有一个类,名称是Sales_item, 这个类用来表示一本书的总销售额、售出册数、平均售价。 上方代码需要表达的意思就是一个对象item 阅读全文
posted @ 2018-08-01 10:01 chattyku 阅读(337) 评论(0) 推荐(0)