《C Primer Plus 第五版》读书笔记
CH1-2:概述
链接器:链接库代码、启动代码(start-up code)
CH3-5:数据、字符串、运算符
1 数据类型存储方式:整数类型、浮点数类型
2 浮点数存储:小数部分+指数部分
3 int:
3.1 %#o,%#x,%#X 分别是前缀0,0x,0X
3.2 (32位系统,括号中为64位)

4 char:转义字符

5 字符串 string.h
6 printf()作用:断行;换行。 printf()有返回值,正确返回打印字符数,错误打印负数。
7 sizeof 与 sizeof()
8 const
9 参数传递
10 scanf():注意 将字符串读入数组不加取地址符&。返回值为成功读入项目个数,没读到返回0,检测文件结尾返回EOF
*用法: printf("%*.*f", width, precision, value);设置宽度和精度
scanf("%d %d %d",&n);//跳过前两个整数,把第三个数读给n
其他用法:
while(scanf("%d",&num)==1)
continue;//作为占位符,使程序更可读
作用:跳过特定输入,如整数。
CH6-9:循环、分支跳转、字符输入输出、函数
1 continue和break
2 单字符
getchar() 流中放入字符
while((ch = getchar())!=‘\n’)防止换行符影响
putchar() 流中取出字符
CH10:数组和指针
1 数组赋值:[ ]指定特定元素
int arry[6] = {[5]=220};
2 数组与指针
array == &array[0];
array +2 == &array[2];
*(array + 2)== array[2];
* array + 2 == array[0] + 2;
3 数组与函数
int sum(int *array, int n);
int sum(int * , int );
int sum(int array[ ], int n);
int sum(int [ ], int);
4 指针
*指针必须初始化
5 const
int * const ptr = ...; 指针不会指向别处 ptr是指针
const int * ptr = ...; 指向的数据不会改变 *ptr是数据
const int * const ptr = ...; 指针和指向的数据都不会改变
6 指针和多维数组array[2][2]
array = &array[0][0] 数组首地址,第一行首地址
array + 1 == &array[0][1] 第二个元素地址
array + 2 == &array[1][0] 第三个元素地址
*(array + 1) == &array[1][0] 第二行的首地址
*(array + 1) + 1 == &array[1][1] 第二行第二个元素地址
*(*(array + 1) + 1) == array[1][1] 第二行第二个元素数据
7 数组指针(数组的指针)与指针数组(指针的数组)
数组指针:指向一维数组的指针,行指针
定义 int (*p)[n];//执行p+1时,p要跨过n个整型数据的长度
指针数组:有n个指针类型的数组
定义 int *p[n];//这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
8 声明N维数组的指针时,只有最左边的方括号可以留空
int sum(int array[ ][4]);
9 变长数组VLA
变长数组必须是auto存储类型
int row = 5;
int array[row];//row的声明要早于array
int sum(int array[row], int row);//错误!row的声明需要早于array
int sum(int array[ * ], int );//如果省略row名称,array需要用*号代替维数
10 复合文字(可传递数组常量,普通数组只能传递数组变量)
声明方法:(int [2]) {10, 20}
(int [ ]) {10, 20, 30}
使用方法:int * ptr; ptr = (int [2]) {10, 20}; //使用指针
int sum(int array[ ]);sum( (int [ ]) {10, 20, 30} )
CH11:字符串和字符串函数
1 指针数组
char * ptr[5];
2 数组指针
char (*ptr)[5];
3 gets( )
从标准输入得到字符串,以换行符\n标记输入结束。
返回\n前所有字符+\0,丢弃\n等待下一次调用。
4 fgets( ) 如果读到\n就一并保存到字符串
ptr = fgets(name, MAX, stdin);从stdin读入最大MAX个字符给name。
5 puts( ) 自动添加换行符\n
6 fputs( ) 不自动添加换行符\n
fputs(name, stdout);
7 字符串函数
strlen( )
strcat( ) 字符串添加到另一个字符串尾
strncat( ) 限制添加的字符数
strcmp( )
strncmp( ) 比较前几个字符
strcpy( )
strncpy( )
sprintf( ) 格式化输入到字符串
sprintf(formal, "%s, %-19s: $%6.2f\n",last, first, prize);
查找字符
ptr = strchr(line, '\n');//返回line中第一个\n的地址
ptr = strrchr(line, '\n');//返回line中最后一个\n的地址
查找子串
ptr = strstr(line, subline);//返回line中第一个subline子串的地址
8 字符串转换为数字
atoi( );
atof( );
atol( );
strtol( );
strtoul( );
strtod( );
CH12:存储类、链接和内存管理
存储类:自动、寄存器、外部链接静态、内部链接静态
auto register extern static
作用域:代码块、文件
链接类型:内部、外部、空
《C Primer Plus 第五版》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- Linux计算机进程地址空间与内核装载ELF
本文基于Linux™系统对进程创建与加载进行分析,文中实现了Linux库函数fork.exec,剖析内核态执行过程,并进一步展示进程创建过程中进程控制块字段变化信息及ELF文件加载过程. 一.初识Li ...
- iOS 网络编程
iOS 开发中所需的数据基本都是来自网络,网络数据请求是 iOS 编程中必不可少的,应该熟练掌握网络请求. 网络请求方式有 :GET , POST , PUT ,DELETE 等,其中常用的就是 GE ...
- [转]用Python做一个自动生成读表代码的小脚本
写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...
- 1483:[HNOI]2009 梦幻布丁 - BZOJ
Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input 第 ...
- Qt:QT右键菜单
Qt QTableView 上加右键弹出菜单, 并复制选中的单元格内容到剪贴板中 http://wenku.baidu.com/view/c51cfb63cf84b9d528ea7a29.html h ...
- mac中用命令行运行mysql
1,安装mysql 在mysql的官方网站下载 mysql 5.5.23 http://www.mysql.com/downloads/mysql/,根据我的机器的配置情况选择了64bit版本. 2, ...
- SPRING IN ACTION 第4版笔记-第九章Securing web applications-007-设置LDAP server比较密码(contextSource、root()、ldif()、)
一.LDAP server在哪 By default, Spring Security’s LDAP authentication assumes that the LDAP server is li ...
- Python高级特性
比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: 这是正确的姿势
- 精选7款绚丽的HTML5和jQuery图片动画特效
在HTML5出现后,图片就变得更加富有动感了,各种图片动画特效也层出不穷,例如图片播放器.图片导航.3D图片动画等等.本文将精选几款具有代表性的HTML5和jQuery图片动画特效,绚丽的画面.实用的 ...
- 功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上
软件名:DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数 ...