C++学习笔记(一)

一、计算机和C++入门

字节和位

主内存被划分称为字节的多个编号位置,一个字节的编号位置就是该字节的地址。每个字节都代表一个能容纳8个二进制位的内存位置。

主存储器

主存储器简称内存,也可以简称为RAM,也就是随机存取存储器

辅助存储器

辅助存储器能在计算机使用之后(和之前)持久性地保存数据。

软件

操作系统为计算机必须完成的不同人物分配计算机资源,操作系统实际是一个程序,或者是多个相互协作的程序。程序是计算机需要遵照执行的一系列指令。 数据是向一个程序提供的输入。

算法

用于解决问题的一系列准确的指令称为算法,通常也可以称为方法、指令、过程和例程等。

C++的起源

BCPLC语言->B语言->C语言->C++

C++的开发工具

记事本(Notepad++)+命令行
Visual C++ 6.0
VS2015
Code::Blocks
其他开发工具
DEV C++、CLion、C-Free、Xcode、C4droid

一个典型的C++代码

#include <iostream>
using namespace std;

int main()
{
cout <<"hello World!"<<;
return 0;
}
  • 以#开头的语句成为预处理命令,告诉编译器到哪里寻找与程序中使用的特定项目有关的信息、#include语句不是必须的,但如果一旦程序中有该语句,就必须把它放到程序的开始处

  • 将iostream文件的内容添加到程序中,iostream中包含了有关输入输出语句的函数

  • using namespeace std为使用命名空间,std是standard(标准的意思)的缩写,std::cout或std::endl代表从属的关系

  • <<符号表示把字符串"Hello World!"发送给cout打印。endl是控制符,(end line的缩写)表示重起一行(\n)。

  • 与其说是程序显示了一条信息,不如说它s将一个字符插入到了输出流中
    。从概念上看,输出是一个流,可以理解成从程序流出的一系列字符。cout右边<<符号是插入运算符,可以将右侧信息插入流中

  • 头文件命名约定

头文件类型 约定 示例 说明
C旧式风格 以.h结尾 stdio.h/math.h C、C++通用
C++旧式风格 以.h结尾 iostream.h C++可以使用
C++新式风格 没有扩展名 iostream C++使用,需要使用namespeace
转换后的C 加上前缀c,没有扩展名 cmath/cytype等 C++使用
  • endl 和 \n的 区别
    1.\n为纯粹的换行
    2.endl为换行和确保程序立刻输出(清空缓冲区)

  • cin:输入语句,读作“see-in”,用于输入

  • cout:输出语句,读作“see-out”,用于输出

编程提示

<<和>>表示数据移动的方向

cin >> number;
cout << number;

C++编码规范

1.每条语句占一行
2.每个函数都有一个开始和结束花括号,花括号各占一行
3.函数中的语句相对于花括号进行缩进
4.与函数名称相关的小括号周围没有空白

编译和执行过程

  1. 编译(预处理->编译->目标文件)
    形成可执行代码/文件。可执行代码是编译器的输出结果,文件扩展名为“.o”或“.obj”
  2. 链接
    将目标代码跟C++函数库相连接,并将源程序的库代码与目标代码合并,形成最终可执行的二进制代码(可执行程序)
  3. 执行
    在特定的机器环境下运行C++应用程序

各种程序错误

语法错误:编译器能够捕捉特定类型的错误,并在检测到错误后输出一条错误信息,表示程序违反了编译语言的语法规则,比如遗漏分号。
警告信息:表明代码从技术上说没有违反语法规则,但出乎寻常,所以它可能是个错误,编译器相当于在说:“你真的是这个意思吗?”
逻辑错误:基础语法错误或者将所发翻译成C++语言的错误,如将*错误的写成了+

二、C++基础知识

变量和赋值

  • C++也使用变量的编程构造来命名和储存数据,变量容纳的数据成为这个变量的
  • 编译器将内存位置分配给程序的每一个变量名,我们可以简单的认为内存位置就是用变量名做标签
  • 变量(或者在程序中定义的其他项目)的名称叫标识符,标识符必须字母或下划线开头,后续每个字符只能是字母、数字、或下划线
  • 计算机用不同的编码方式编码不同类型变量,声明变量就是告诉编译器两点,一、应该给一个变量分配多大的内存空间,二、用哪种编码方式将变量的值表示成一串0和1

赋值语句

C++语序采用另一种方式初始化变量
例:

double rate(0.07),time,balance(0.0);

小数点后位数控制

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);

图例为保留两位小数,改变(2)的数字即可改变小数位数

输入和输出

输入流是提供计算机并有程序使用的一系列输入。“流”表明程序将以相同的方式处理所有输入,无论这些输入从何而来。输出流同样如此,是程序生成的一系列输出。

  • <<符号是插入运算符

    using namespace std;
    特定的using指令表明程序准备会用std命名空间。命名空间不是一个名称集合,它代表了一个C++代码主体,其中指定了某些名称的含义,命名空间的作用是将所有C++名称规范划分成不同的集合(称为命名空间),使用命名空间的每一个名称都有一个“规范”(一个定义),命名空间对名称进行划分,但和那些命名空间配合的还有大量的C++代码

转义序列

如果在代码总使用了未定义的转义序列,就失去了“可移植性”

string类

C++缺乏原生数据类型来直接操作字符串,但在string类的帮助下,可以声明一个string类型的变量来进行操作
用cin将数据读入字符串,在两个字符串之间可以用“+”符号可将两个字符串连接成一个更长的。
例如:

string day,day1,day2;
day1="Monday";
day2="Tuesday";
day=day1+day2;

会连接成以下字符串:

"MondayTuesday"

算数操作符和表达式

向负int值应用/和%操作符的结果因C++实现而异,所以,为保证程序的可移植性,只有在确定两个int非负时,才对它们使用/和%。

简单控制流程

  • 语句执行顺序通常称为控制流程控制流

程序风格

const修饰符声明的变量称为声明常量命名常量

三、更多的控制流程

使用布尔表达式

  • 布尔表达式是求值为真或假的表达式,true表示条件满足,false表示条件不满足。
  • C++首先求值最左边的子表达式,如果获得的信息足以判断整个表达式的终值(不管第二个字表达式是什么),C++就不在对第二个表达式求值,这种求值方法叫做短路求值

多路分支

嵌套语句

编译器总是将else与上一个未与其他else配对的if进行配对,这被称为else的虚悬问题
编程提示:在嵌套语句中使用花括号

switch语句

switch语句的控制表达式必须返回以下值之一:布尔值、enum常量、某个常数类型或者一个字符。

代码块

通常将包含变量声明的复合语句称为

C++循环语句详解

  • 在循环中重复的语句(或语句组)称为循环主体循环体
  • 不可以将递增和递减操作符应用于除单个变量之外的任何东西,在C++中,(x+y)++,--(x+y)这些表达式都是无效的

for语句

在C++中,for语句的初始化操作可以包含变量声明。
如:

for(int n=1;n<=10;n++)
    sum=sum+n;

ANSI C++标准规定,对于for循环头里的任何声明,都嘉定它相对于循环主体来说是“局部”的。

设计循环

  • 设计循环三要素

1.循环体
2.初始化语句
3.循环结束条件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容