幻灯片 1

Similar documents
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

c_cpp

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

新版 明解C++入門編

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

C/C++语言 - C/C++数据

CC213

C/C++程序设计 - 字符串与格式化输入/输出

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

chap07.key

C 1

02

Microsoft PowerPoint - 10 模板 Template.pptx

Microsoft Word - CPE考生使用手冊 docx

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

新・解きながら学ぶC言語

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

第3章.doc

untitled

C C

FY.DOC

C/C++ - 文件IO

新版 明解C言語入門編

新・明解C言語入門編『索引』

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

PowerPoint 演示文稿

untitled

WHUST 2017 Div.2 Day 3.5 C++ 标准模版库

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

CHAPTER 1

C++11概要 ライブラリ編

CHAPTER VC#

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

《C语言程序设计》教材习题参考答案

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

C/C++ - 结构体、共用体、枚举体

Microsoft PowerPoint - string_kruse [兼容模式]

3.1 num = 3 ch = 'C' 2

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

《计算概论》课程 第十九讲 C 程序设计语言应用

untitled

C/C++ - 函数

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

C/C++ System Program Documentation

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C/C++ - 字符输入输出和字符确认

北京大学

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

1 C++ 2 Bjarne Stroustrup C++ (system programming) 6 (infrastructure) C++ 7 Herb Sutter 8 C++ (efficiency) (flexibility) 9 (abstraction) (productivity

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

C

untitled

C/C++ 语言 - 循环

C/C++语言 - 运算符、表达式和语句

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

nooog

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1

Ps22Pdf

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

51 C 51 isp 10 C PCB C C C C KEIL

untitled

ARM中C和汇编混合编程及示例.doc

新・解きながら学ぶJava

C

Microsoft PowerPoint - 1. C++介绍.ppt [兼容模式]

Microsoft PowerPoint - 01_Introduction.ppt

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1

_汪_文前新ok[3.1].doc

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

Microsoft Word - 新1-12.doc

PowerPoint 演示文稿

Microsoft PowerPoint - 0 C复习.ppt [兼容模式]

C/C++语言 - 分支结构

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

untitled

《C语言程序设计》第2版教材习题参考答案

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 01.DOC

C

Microsoft Word - 正文.doc

IO

C/C++ - 字符串与字符串函数

Microsoft PowerPoint - 08_OO_CJC.ppt

华恒家庭网关方案

迅速在两个含有大量数据的文件中寻找相同的数据

ebook39-5

Transcription:

第一课 C 与 C++ 互联网新技术在线教育领航者 1

内容概述 第一部分 : C++ 综述 1. C++ 历史背景 2. Why C++ 3. 推荐书籍第二部分 : C VS C++ 1. C 语法回顾 2. 例 :C 实现动态数组 3. C++ 的 vector 第三部分 :C++ 对 C 的扩展 ( 上 ) 1. 命名空间 2. 输入输出 3. 基本类型转换 4. 声明 列表初始化 5. 指针和引用 6. const 限定符 7. struct 和 class 8. string 和 vector 9. 练习 : 进制转换 互联网新技术在线教育领航者 2

C++ 历史背景 1982 年, 美国 AT&T 公司贝尔实验室的 Bjarne Stroustrup( 本贾尼 ) 博士在 C 语言的基础上引入并扩充了面向对象的概念, 发明了 种新的程序语言, 被命名为 C++ C++ 发展的几个阶段 : 第一阶段 ( 从 80 年代到 1995 年 ): 这一阶段 C++ 语言基本上是传统类型上的面向对象语言, 凭借着接近 C 语言的效率, 在开发语言中占据了很大份额 ; 第二阶段 ( 从 1995 年到 2000 年 ): 这一阶段由于标准模板库 (STL) 等程序库的出现, 泛型程序设计在 C++ 中占据了越来越多的比重性 当然, 同时由于 Java 等语言的出现和硬件价格的大规模下降,C++ 受到了一定的冲击 ; 第三阶段从 2000 年至今, 由于以 Loki MPL 等程序库为代表的产生式编程和模板元编程的出现,C++ 出现了发展历史上又一个新的高峰, 这些新技术的出现以及和原有技术的融合, 使 C++ 已经成为当今主流程序设计语言中最复杂的一员 互联网新技术在线教育领航者 3

C 与 C++ 的区别 C 语言 :C 语言诞生得非常早 (70 年代 ),C 语言的目标就是比汇编方便易用, 同时不要损失汇编的表达能力 所以 C 语言可以看成是 高级的汇编 语言 C 的特点, 简单容易编译, 灵活贴近底层 所以一直到现在, 一些需要直接和硬件打交道的软件都还是用 C 语言写的, 比如 ( 但不限于 )Linux Kernel 和一些嵌入式领域 C++ 语言 :C++ 早期是基于 C 的 C++ 的目标是提高编程人员的生产效率 而提高编程人员生产率的方法有如下几种 : 提高抽象层次, 支持模块化编程, 模块内紧耦合, 模块间松耦合, 自动化的代码生成等等, 在 C++ 中可以比 C 更直接更自然地做到这些 面向对象只是 C++ 的一部分, 现代的 C++ 的目标是支持多种编程范型, 同时并不会离硬件太远 所以 C++ 是非常适合写一些基础架构级软件的, 比如编译器,GUI 库等等 互联网新技术在线教育领航者 4

C++ 内容 C++ 兼容 C ++ 的内容 : C++ 对 C 语法的扩展面向对象模板和 STL 应用领域 ( 效率 建模和高度抽象 ) 系统层软件 服务器程序 云计算 分布式 游戏 互联网新技术在线教育领航者 5

C++ 书籍 C++ Primer 第 5 版 Effective C++ 互联网新技术在线教育领航者 6

C 语法回顾 基本类型 :int char float double 输入输出 :scanf printf 基本语句 :for,while,switch case,if else 数组 :int arr[ ] 字符串 :char str[ ] 指针 :int *p 内存分配 :malloc 和 free 函数 :function 结构体 :struct 文件操作 :FILE 互联网新技术在线教育领航者 7

C 实现动态数组 存储学生信息, 要求顺序存储可逐个添加信息, 减少内存浪费 互联网新技术在线教育领航者 8

C++ 的 vector 使用 C++ 中的标准库类型 vector 可以很轻松地完成任务 ( 不需要自己管理内存的分配 ) ( 对不同的类型, 都可处理 ) 使用 C++ 中的标准库类型 string 替代 C 中的字符数组, 编程更自如 互联网新技术在线教育领航者 9

C++ 对 C 的扩展 ( 命名空间 : 作用域 ) 作用域 : 变量都有其作用域全局变量 :( 全局 ) 局部变量 :( 函数内部或 { } 内 ) 相同作用域中, 同名变量只可定义一次不同作用域中, 同名变量可重复定义, 只有新定义的起作用 实际上, 不同作用域的同名变量所占有的内存空间是不同的 互联网新技术在线教育领航者 10

C++ 对 C 的扩展 ( 命名空间 : 引入原因 ) 引入原因 : 在大中型项目开发过程中, 经常会用到多家公司提供的类库, 或者协作开发的多个小组之间, 可能会使用同名的函数或者全局变量, 从而造成冲突 命名空间, 是为了解决这种命名冲突而引入的一种机制 C 语言中没有该机制 C++ 语言中引入了该机制 互联网新技术在线教育领航者 11

C++ 对 C 的扩展 ( 命名空间 : 基本语法 ) 基本语法 : namespace 空间名字 { 变量 ; 函数 ; } ( 注意, 此处没有分号 ) 基本用法 : 空间名字 :: 变量名 / 函数名 命名空间分割了全局命名空间 (::) 每个命名空间都是一个作用域 互联网新技术在线教育领航者 12

C++ 对 C 的扩展 ( 命名空间 : 使用方法 ) 使用用法 1. 空间名字 :: 变量名 / 函数名 2. using 空间名字 :: 变量名 / 函数名 ; 3. using namespace 空间名字 ; 第 2 种用法每次只能引入一个成员 ; 第 3 种用法会打开该空间中所有的成员 ( 变量 / 函数等 ), 谨慎使用 互联网新技术在线教育领航者 13

C++ 对 C 的扩展 ( 命名空间 : 使用例子 ) 在实际使用中 : 要避免二义性错误 直接使用空间名字 :: 变量 / 函数的写法是最保险的 当然, 出现这样的错误, 编译器会提醒你 互联网新技术在线教育领航者 14

C++ 对 C 的扩展 ( 命名空间 : 嵌套 不连续 ) 命名空间支持嵌套 命名空间可以是不连续的, 同名空间自动合并 不要把 #include 放在命名空间内部 互联网新技术在线教育领航者 15

C++ 对 C 的扩展 ( 命名空间 : 实际应用 ) 起别名 ( 方便书写 ) namespace TV=myTelev.; 平时常用的命名空间成员的 using 声明写在一个头文件中, 方便使用 ( 如 :using std::cout;) 互联网新技术在线教育领航者 16

C++ 对 C 的扩展 ( 输入输出 ) C++( 头文件 #include <iostream>) C( 头文件 #include <stdio.h>) cin 标准输入 键盘 scanf cout 标准输出 屏幕 printf cerr 标准错误输出 屏幕 fprintf(stderr, ) cin 和 cout 是 C++ 的标准输入流和标准输出流 在头文件 <iostream> 中定义 需要使用命名空间 std std::cin std::cout std::endl ( 推荐用法 ) 或者 using std::cin; using std::cout; using std::endl; 或者 using namespace std; ( 为了演示方便, 使用该方法 ) 互联网新技术在线教育领航者 17

C++ 对 C 的扩展 ( 输入输出 : 格式化 ) 互联网新技术在线教育领航者 18

C++ 对 C 的扩展 ( 输入输出 : 字符串 ) 互联网新技术在线教育领航者 19

C++ 对 C 的扩展 ( 数据类型 : 基本内置类型 ) 类型 含义 一般尺寸 整形 int 整形 4 字节 char 字符 1 字节 bool 布尔类型 1 字节 浮点型 float 单精度浮点数 6 位有效数字 double 双精度浮点数 10 位有效数字 bool 类型是 C++ 新增的 bool 类型的取值是 true( 真 ),false( 假 ) 常用的数据类型 : unsigned int short, unsigned short long, unsigned long long long, unsigned long long 互联网新技术在线教育领航者 20

C++ 对 C 的扩展 ( 数据类型 : 基本类型转换 ) 互联网新技术在线教育领航者 21

C++ 对 C 的扩展 ( 数据类型 :unsigned 注意 ) 互联网新技术在线教育领航者 22

C++ 对 C 的扩展 ( 数据类型 : 声明 列表初始化 ) 互联网新技术在线教育领航者 23

C++ 对 C 的扩展 ( 数据类型 : 指针和引用 ) 指针实际上是地址, 指针变量用来存放指针 ( 地址 ) 指针变量也是一种变量, 同样要占用一定的存储空间 指针的存储空间存放的是一个地址 引用是给变量或对象起一个别名 定义时必须初始化, 一旦绑定, 终身不变 引用并不占用存储空间 互联网新技术在线教育领航者 24

C++ 对 C 的扩展 ( 数据类型 : 引用 ) 引用是给变量或对象起一个别名 定义时必须初始化, 初始化是为了将该引用与它引用的变量或对象绑定, 一旦绑定, 该引用无法再重新绑定别的变量或对象 引用并不占用存储空间 互联网新技术在线教育领航者 25

C++ 对 C 的扩展 ( 数据类型 : 引用 ) 数组的引用 : 引用的本质 : 从下面的代码, 可以猜测, 引用好像就是个指针 通过汇编代码的分析, 可以推测引用实际上是通过指针来实现的 引用是指针的一种包装 : 类似 int * const p 这样的格式的一种包装 互联网新技术在线教育领航者 26

C++ 对 C 的扩展 ( 数据类型 :const 限定符 1) C++ 增强了对类型的限制 const 限定符在 C++ 编程中会经常用到 const int i = 10; // 编译时初始化 const int i = get_size(); // 运行时初始化 int j = 20; const int i = j; // 用来初始化的值是否常量无关紧要 默认情况下 :const 对象仅在文件内有效 假如要在多个文件中生效, 则 const 变量不管是声明还是定义, 都加上 extern 关键字 互联网新技术在线教育领航者 27

C++ 对 C 的扩展 ( 数据类型 :const 限定符 2) 互联网新技术在线教育领航者 28

C++ 对 C 的扩展 ( 数据类型 :struct 和 class) 结构体是一种自定义数据类型 标准 C 中的结构体是不允许包含成员函数 C 语言结构体中可通过函数指针的方式加函数 C++ 中的结构体对此进行了扩展 互联网新技术在线教育领航者 29

C++ 对 C 的扩展 ( 数据类型 : 字符串 ) 互联网新技术在线教育领航者 30

C++ 对 C 的扩展 ( 数据类型 :vector) 标准库类型 vector 表示对象的集合, 其中所有的对象的类型必须相同 因为 vector 容纳着 其他对象, 所以被称为 容器 vector 是一个类模板 互联网新技术在线教育领航者 31

C++ 对 C 的扩展 (auto 类型说明符 ) auto: 让编译器替我们分析表达式的类型 互联网新技术在线教育领航者 32

C++ 对 C 的扩展 ( 练习 : 进制转换, 填空 ) 进制转换 : 输入 : 整数 ( 如 :256) 输出 :10 进制的字符串 ( 256 ) 16 进制的字符串 ( FF ) 思路 : 通过取余操作逐个得到 num 的个位 十位 百位 存入数组然后反向取出 互联网新技术在线教育领航者 33

C++ 对 C 的扩展 ( 练习 : 进制转换 ) 进制转换 : 输入 : 整数 ( 如 :256) 输出 :10 进制的字符串 ( 256 ) 16 进制的字符串 ( FF ) 互联网新技术在线教育领航者 34