C语言基础第一章:基本数据类型

整体思维导图

在这里插入图片描述

1.基本数据类型

在这里插入图片描述

1.1.整型

1、整型内部结构原理
定义一个int 2,也就是系统自动申请4个字节的内存来存储这个2,对于32位而言,整型的取值范围就是0 ~ 2^31-1(正数),无符号整型原理如下图所示:
在这里插入图片描述
负数同理可知,它的取值范围是-2^31-1 ~ 2^31-1,但是负数的存储过程是补码,也就是取反再+1,如下图所示:
在这里插入图片描述
代码如下:
在这里插入图片描述

1.2.字符

字符其实就是用来存放整型的,比如字符‘A’其实就是ASCII 65,也就是存放ASCII,代码如下
在这里插入图片描述

1.3.浮点型

Float,直接上代码
在这里插入图片描述

1.4.布尔型

在这里插入图片描述

1.5.可移植性数据类型

比如在两个不同平台当中,int一个平台代表2字节,另一个平台int代表4字节,那么就可以通过我们的关键字typdef来定义,相当于就多了一个中间层
在这里插入图片描述
上图所示,int32_t就是我们的中间层,通过定义int32_t j;在A平台则代表定义的是long j,在B平台代表int j;他们都是4个字节,这就是跨平台的可移植性。如果就单纯的定义一个int i;则不具备可移植性

1.6.字符串

(1)字符数组

字符串其实就是字符数组,比如一个字符串是”abc”,那么它的内部原理如下图所示,也就是占4个字节,因为有个结束标志‘\0’,如果是空的也会占一个字节,也就是‘\0’。
常用的字符串也就是一维数组,比如char str[] = “abc”;
在这里插入图片描述

(2)字符指针

指针就是用来指向数组的首地址,如下图所示,定义了一个char *p,p就是指向数组的首地址,也就是‘a’的地址,假设’a’的地址为0x123,那么P就是0x123。如果p=“abc”+1,那么p就是地址+1,也就是指向了‘b’,也就是0x124
在这里插入图片描述

2 printf和scanf的使用

2.1.printf四种用法:

1.printf("字符串");
2.printf("输出控制符\n",输出参数);
3.printf("输出控制符1 输出控制符2...",输出参数1,输出参数2...);
4.printf("输出非控制符 输出控制符1",输出参数);

scanf用法:
scanf不要用\n,如果是数组或字符,不用取地址符

2.2.关于printf输出缓存问题:

有\n会马上输出
结束时会马上打印
输出缓冲区满时
有输入请求时,即scanf,也会立即打印到屏幕上

2.3.scanf

Scanf是获取用户输入,比如需要从键盘输入100,那么最先获取到这个数据的是内核的键盘驱动,然后内核再将数据给到user的标准IO缓冲区中,最后才是scanf来获取数据。
在这里插入图片描述
scanf比较挑剔,定义什么类型的数据就获取什么类型的数据,而getchar是每次只拿一个数据,不管是什么数据类型。
代码如下:
在这里插入图片描述

已标记关键词 清除标记
相关推荐
C语言接口与实现:创建可重用软件的技术》,原名《C Interfaces and Implementations:Techniques for Creating Reusable Software》,作者:【美】David R.Hanson,翻译:傅蓉 周鹏 张昆琪 权威,出版社:机械工业出版社,ISBN:7111130057,PDF 格式,大小 10MB。 内容简介: 本书概念清晰、内容新颖、实例详尽,是一本有关设计、实现和有效使用c语言库函数,掌握创建可重用c语言软件模块技术的参考指南。本书倡导基于接口的c语言设计理念及其实现技术,深入详细地描述了24个c语言接口及其实现。    本书通过叙述如何用一种与语言无关的方法将接口的设计与实现独立开来,从而形成一种基于接口的设计途径来创建可重用的api,本书是一本针对 c语言程序员的不可多得的好书,也是值得所有希望掌握可重用软件模块技术的读者阅读的参考书籍。    关于如何设计、实现和有效使用库函数的指南少之又少(如果说还有的话)。这本力作填补了这 个空白。它可以作为下一代软件的工具书.所有的c语言程序员都应该阅读。    ——w.richard stevens    “我向每位专业c语言程序员推荐这本书。c语言程序员们忽视书中所描述的各种技术已经太长时 间了。”    ——norman ramsey,贝尔实验室研究员 每一位程序员和软件项目经理必须掌握创建可重用软件模块的技术:可重用软件模块是 构建大规模、可靠应用的基石。与当前某些面向对象语言不同,c语言为创建可重用应用程 序接口(application programming interface,api)提供的语言和功能支持非常少。尽管大多 数c语言程序员在自己所编写的每一个应用程序中都使用api和实现api的库.但只有相当少 的程序员可以创建和发布新的、可广泛使用的api。本书阐述了如何用一种与语言无关的方 法将接口的设计与实现独立开来,从而形成一种基于接口的设计途径来创建可重用的api。 书中提供大量实例具体说明这种方法。作者详细描述了24个接口和它们的实现细节,有助于 读者对这种设计方法的透彻理解。 本书具有如下特色: 简洁明了的接口描述。为对接口设计感兴趣的程序员提供了一个参考手册 每一接口的代码实现分析将帮助读者修改、扩充一个接口,或者设计相关接口 深入探讨了“算法工程”:阐述如何将数据结构以及相关算法打包到可重用模块中 24个api和8个实例程序的源代码都经过测试检查,每个程序都是按照”literate程序”的形 式构成。为源代码提供了全面完整的解释 提供了非常少见的有关c语言编程技巧的文档记录 可以方便地在http://www.cs.princeton.edu/software/cii/访问本书的所有源码 目录: 出版者的话 专家指导委员会 译者序 前言 第1 简介 1 1.1 literate程序 2 1.2 编程风格 6 1.3 效率 7 参考书目浅析 9 练习 9 第2 接口与实现 11 2.1 接口 11 2.2 实现 13 2.3 抽象数据类型 15 2.4 客户调用程序的责任 17 2.5 效率 21 参考书目浅析 21 练习 22 第3 原子 25 3.1 接口 25 .3.2 实现 26 参考书目浅析 31 练习 31 第4 异常与断言 33 4.1 接口 34 4.2 实现 38 4.3 断言 43 参考书目浅析 46 练习 46 第5 内存管理 49 5.1 接口 50 5.2 产品级实现 53 5.3 校验实现 55 参考书目浅析 62 练习 62 第6 进一步内存管理 65 6.1 接口 65 6.2 实现 67 参考书目浅析 72 练习 73 第7 链表 75 7.1 接口 75 7.2 实现 78 参考书目浅析 83 练习 83 第8 表格 85 8.1 接口 85 8.2 例子:单词频率 87 8.3 实现 92 参考书目浅析 98 练习 98 第9 集合 101 9.1 接口 101 9.2 实例:交叉引用列表 103 9.3 实现 109 9.3.1 成员操作 110 9.3.2 集合操作 113 参考书目浅析 116 练习 116 第10 动态数组 119 10.1 接口 119 10.2 实现 122 参考书目浅析 124 练习 125 第11 序列 127 11.1 接口 127 11.2 实现 128 参考书目浅析 133 练习 133 第12 环 135 12.1 接口 135 12.2 实现 1
《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参数教材。学了数据结构后,许多以前写起来很繁杂的代码现在写起来很清晰明了. 本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。 全书采用类C语言作为数据结构和算法的描述语言。 本书概念表述严谨,逻辑推理严密,语言精炼,用词达意,并有配套出版的《数据结构题集》(C语言版),便于教学,又便于自学。 本书后附有光盘。光盘内容可在DOS环境下运行的以类C语言描述的“数据结构算法动态模拟辅助教学软件,以及在Windows环境下运行的以类PASCAL或类C两种语言描述的“数据结构算法动态模拟辅助教学软件”。内附 数据结构算法实现(严蔚敏版配套实现程序) 目录: 第1 绪论 1.1 什么是数据结构 1.2 基本概念和术语 1.3 抽象数据类型的表现与实现 1.4 算法和算法分析 第2 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示及相加 第3 栈和队列 3.1 栈 3.2 栈的应有和举例 3.3 栈与递归的实现 3.4 队列 3.5 离散事件模拟 第4 串 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4.4 串操作应用举例 第5 数组和广义表 5.1 数组的定义 5.2 数组的顺序表现和实现 5.3 矩阵的压缩存储 5.4 广义表的定义 5.5 广义表的储存结构 5.6 m元多项式的表示 5.7 广义表的递归算法第6 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.2.1 二叉树的定义 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构 6.3 遍历二叉树和线索二叉树 6.3.1 遍历二叉树 6.3.2 线索二叉树 6.4 树和森林 6.4.1 树的存储结构 6.4.2 森林与二叉树的转换 6.4.3 树和森林的遍历 6.5 树与等价问题 6.6 赫夫曼树及其应用 6.6.1 最优二叉树(赫夫曼树) 6.6.2 赫夫曼编码 6.7 回溯法与树的遍历 6.8 树的计数 第7 图 7.1 图的定义和术语 7.2 图的存储结构 7.2.1 数组表示法 7.2.2 邻接表 7.2.3 十字链表 7.2.4 邻接多重表 7.3 图的遍历 7.3.1 深度优先搜索 7.3.2 广度优先搜索 7.4 图的连通性问题 7.4.1 无向图的连通分量和生成树 7.4.2 有向图的强连通分量 7.4.3 最小生成树 7.4.4 关节点和重连通分量 7.5 有向无环图及其应用 7.5.1 拓扑排序 7.5.2 关键路径 7.6 最短路径 7.6.1 从某个源点到其余各顶点的最短路径 7.6.2 每一对顶点之间的最短路径 第8 动态存储管理 8.1 概述 8.2 可利用空间表及分配方法 8.3 边界标识法 8.3.1 可利用空间表的结构 8.3.2 分配算法 8.3.3 回收算法 8.4 伙伴系统 8.4.1 可利用空间表的结构 8.4.2 分配算法 8.4.3 回收算法 8.5 无用单元收集 8.6 存储紧缩 第9 查找 9.1 静态查找表 9.1.1 顺序表的查找 9.1.2 有序表的查找 9.1.3 静态树表的查找 9.1.4 索引顺序表的查找 9.2 动态查找表 9.2.1 二叉排序树和平衡二叉树 9.2.2 B树和B+树 9.2.3 键树 9.3 哈希表 9.3.1 什么是哈希表 9.3.2 哈希函数的构造方法 9.3.3 处理冲突的方法 9.3.4 哈希表的查找及其分析 第10 内部排序 10.1 概述 10.2 插入排序 10.2.1 直接插入排序 10.2.2 其他插入排序 10.2.3 希尔排序 10.3 快速排序 10.4 选择排序 10.4.1 简单选择排序 10.4.2 树形选择排序 10.4.3 堆排序 10.5 归并排序 10.6 基数排序 10.6.1 多关键字的排序 10.6.2 链式基数排序 10.7 各种内部排序方法的比较讨论 第11 外部排序 11.1 外存信息的存取 11.2 外部排序的方法 11.3 多路平衡归并的实现 11.4 置换一选择排序 11.5 最佳归并树 第12 文件 12.1 有关文件的基本概念 12.2 顺序文件 12.3 索引文件 12.4 ISAM文件和VSAM文件 12.4.1 ISAM文件 12.4.2 VSAM文件 12.5 直接存取文件(散列文件) 12.6 多关键字文件 12.6.1 多重表文件 12.6.2 倒排文件 附录A 名词索引 附录B 函数索引 参考书目
中文名:C语言编程:一本全面的C语言入门教程(第三版) 格式:PDF 完整程度:完整 包含中文版PDF,英文版PDF和习题答案 英文名:Programming in C:A Complete introduction to the C programming language,Third Edition 作者: (美)Stephen Kochan 译者: 张小潘 副标题: 本书是极负盛名的C语言入门经典教材,其第一版发行至今已有二十年的历史 ! ISBN: 9787121007354 页数: 543 定价: 59.0 出版社: 电子工业出版社 装帧: 平装 出版年: 2006-3-1 简介 · · · · · ·   本书是极负盛名的C语言入门经典教材,其第一版发行至今已有20年的历史。本书内容详实全面,由浅入深,示例丰富,并在每个节后面附有部分习题,非常适合读者自学使用。除此之外,《C语言编程》一书对于C语言标准的最新进展、C语言常见开发工具以及管理C语言大型项目等重要方面,也进行了深入浅出的说明。 作者简介 · · · · · ·   Stephen G.Kochan是本计算机编程和Unix操作系统经典书籍的作者或合著者,这些书包括《Unix Shell编程》和《Objective-C编程语言》等。作者曾作为软件咨询顾问工作于AT&T的贝尔实验室,专门负责设计和教授Unix和C语言方面的课程。 目录 ······ 第1 入门 第2 基础知识  程序设计  高级编程语言  操作系统  编译程序 · · · · · · (更多) 第1 入门 第2 基础知识  程序设计  高级编程语言  操作系统  编译程序  集成开发环境  解释型语言 第3 编译并运行第一个程序  编译我们的第一个程序  运行我们的第一个程序  理解我们的第一个程序  显示变量的值  注释  练习 第4 变量、数据类型和算术表达式  使用变量  数据类型与常量  基本整数类型 int  存储空间与范围  浮点数类型 float  扩展精度的浮点类型 double  字符类型 char  布尔类型 _Bool  类型修饰符:long, long long, short, unsigned和signed  使用算数表达式  整数算术和单目减法操作符  余数操作符  整型数与浮点数之间的转换  结合运算和赋值:运算赋值操作符  类型 _Complex和_Imaginary  练习 第5 循环  for语句  关系操作符  对齐输出  程序输入  嵌套的for循环  for循环的变体  while语句  do语句  break语句  continue语句  练习 第6 进行判断  if语句  if - else结构  复合关系表达式  嵌套的if语句  else if 结构  switch语句  布尔变量  条件操作符  练习 第7 使用数组  定义数组  使用数组计数  产生Fibonacci数  使用数组产生质数  数组初始化  字符数组  使用数组完成基数转换  const修饰符  多维数组  变量长度的数组  练习 第8 使用函数  定义函数  参数与局部变量  函数原型声明  自动局部变量  函数的返回值  函数调用……  声明返回值类型以及参数类型  检查函数的参数  自顶向下的程序设计  函数与数组  赋值表达式  数组排序  多维数组  函数与可变长度的多维数组  全局变量  自动变量和静态变量  递归函数  练习 第9 使用结构  用于存储日期的结构  在表达式中使用结构  函数与结构  用于存储时间的结构  结构的初始化  复合字面量  结构数组  包含结构的结构  包含数组的结构  结构的变形形式  练习 第10 字符串 第11 指针 第12 位运算 第13 预处理器 第14 进一步讨论数据类型 第15 处理大型程序 第16 C语言的输入输出 第17 杂项和高级特性 第18 调试程序 附录A C语言小结 附录B C语言标准库 附录C 使用gcc编译程序 附录D 常见编程错误 附录E C语言的其他资源 索引
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页