C和指针 (pointers on C)——第一章:高速启动
大多数人并不认为有几类人猿学校计划非常赞同C学习好,然后看多本书。
仅仅作为读书笔记写。有时还包括一些题目和答案。
这样的公开栏,这两种玉引砖敲,对于自勉,鼓励王!
第一章:手
我每次都是复习的来写。我想是这一章,哪怕是上手也须要有一定的C基础。
总结:提出了stdio.h中一些主要的函数。如scanf(),printf(),getchar(),putchar(),gets(),puts()等io函数。
关于NULL和NUL的差别也说了一些。
NUL也就是字符串中的截尾字符'\n',并不存在与预处理中。
NULL是stdio中定义好的字符,表示指针为空,为整型0。
EOF也是stdio种定义好的字符。表示为指针指向文档的结尾。
警告:
1、在scanf函数的标量參数前并未加入&字符。
首先是标量參数,举个样例,数组元素參数是标量參数。它通过值传递来通过main和函数间传递。
&符号在这里是寻址。假设是数组參数,它本身是个地址,所以就不须要做寻址运算了。
2、机械地把printf函数的格式代码照搬于scanf函数。
3、在应该使用&&操作符的地方误用了&操作符。
一个是逻辑操作符。一个是寻址。一般细心都能够避免这个问题。
4、误用=操作符而不是==操作符来測试相等性。
同上,只是这个问题好像犯错的人很多其它一些。
尤其是在if、while推断中常常出现。
如:while(pointer==EOP)
编程提示:
1、使用#include指令避免反复声明。
同一时候在#include 里面放置函数的原型。
2、使用#define 指令给常量命名。
3、使用数组下标前先检查他们的值。
如:ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
这是个好习惯。
4、在while/if表达式中蕴含赋值操作。
如:
ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
就能够写成:
while((ch = getchar()) != EOF && ch != '\n')
;
这样,就能够消除冗余语句。
你能够理直气壮地声称这样的可读性非常差的代码技巧应该避免使用。我也能够理直气壮地告诉你。这是由于你对C不是非常熟。
大牛们在读代码的时候根本不会出现不论什么问题。
5、怎样编写一个空循环体。
while((ch = getchar()) != EOF && ch != '\n')
;
这个分号是很重要的。否则下一句不相关的语句就会被拖入while循环。
6、怎样进行检查。确保数组不越界。
比方在存数组中,必需包含下面:
1、假设输入行结束或者输入行数组已满,跳出循环break;
2、假设输出数据没有足够的空间排,只有傅值它可以容纳数据;
版权声明:本文博客原创文章。博客,未经同意,不得转载。
C和指针 (pointers on C)——第一章:高速启动的更多相关文章
- 《C和指针》读书笔记——第一章 快速上手
1.注释代码可以用: #if 0 statements #endif 2.参数被声明为const,表明函数将不会修改函数调用者的所传递的这个参数. 3.scanf("%d",&am ...
- flask第一章 flask启动 路由视图 FlaskRequest jinja2 FlaskSession
一.简单了解flask web框架 优点: 小而精,组件只有session,第三方机构强烈支持flask,极其简单 缺点: 由于第三方软件的关系,稳定性相对较差,flask-session 扩展知识: ...
- Netty源码分析第1章(Netty启动流程)---->第1节: 服务端初始化
Netty源码分析第一章: Server启动流程 概述: 本章主要讲解server启动的关键步骤, 读者只需要了解server启动的大概逻辑, 知道关键的步骤在哪个类执行即可, 并不需要了解每一步的 ...
- Netty源码分析第1章(Netty启动流程)---->第2节: NioServerSocketChannel的创建
Netty源码分析第一章: Server启动流程 第二节:NioServerSocketChannel的创建 我们如果熟悉Nio, 则对channel的概念则不会陌生, channel在相当于一个通 ...
- Netty源码分析第1章(Netty启动流程)---->第3节: 服务端channel初始化
Netty源码分析第一章:Netty启动流程 第三节:服务端channel初始化 回顾上一小节的initAndRegister()方法: final ChannelFuture initAndRe ...
- Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用
Netty源码分析第一章:Netty启动流程 第四节:注册多路复用 回顾下以上的小节, 我们知道了channel的的创建和初始化过程, 那么channel是如何注册到selector中的呢?我们继 ...
- Netty源码分析第1章(Netty启动流程)---->第5节: 绑定端口
Netty源码分析第一章:Netty启动步骤 第五节:绑定端口 上一小节我们学习了channel注册在selector的步骤, 仅仅做了注册但并没有监听事件, 事件是如何监听的呢? 我们继续跟第一小节 ...
- 《C与指针》第十二章练习
本章例程 //12.3 #include <stdio.h> #include <stdlib.h> typedef struct NODE{ struct NODE *lin ...
- 第一章.C语言简介
C语言第一章 C语言简介 目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...
随机推荐
- JDK5什么是新的线程锁技术(两)
一个. Lock线程同步实现互斥 Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也是一个对象. 两个线程运行的代码片段要实现同步相互排斥的效果.他们必须用 ...
- quick-cocos2d-x endToLua 退出会卡住
问题: 马上赚钱,退出会出现卡住,然后清理,死界面的情况,百思不得其解,昨天在做push的时候,突然发现.在android里面弹出一个退出对话框,点击确定退出,这时候调用endtolua时,有时也会切 ...
- unity调用安卓打包apk时的错误unable to convert classes into dex format
出现这种问题一般是由于有重复的文件所致,看下unity报的错误那些文件重复了,把重复的文件删了即可 例如,将eclipse中的安卓工程bin\class导出jar包时,会将下面的.class文件打包, ...
- (hdu step 6.3.5)Card Game Cheater(匹配的最大数:a与b打牌,问b赢a多少次)
称号: Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
Akka.NET v1.0 已发布,支持Mono Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 M ...
- maven的webapp产品热销部署eclipse,biz和其他子项目jar一揽子的解决方案无法找到!
eclipse maven 这也太坑.. ..右键单击该项目 在这里,当地仓库子项目jar新增可以成功启动tomcat... ( maven项目年初进口eclipse他们是正常的. 当...的时候we ...
- jquery声明
$("[id^=total_item]")代表 id随着total_item开始XX..必须jquery支持 版权声明:本文博主原创文章,博客,未经同意,不得转载.
- POJ2352_Stars(段树/单点更新)
解决报告 意甲冠军: 坐标.查找在数星星的左下角每颗星星. 思考: 横轴作为间隔,已知的输入是所述第一到y排序再次x次序.每次添加一个点来查询点x多少分离开坐标,然后更新点. #include < ...
- Android学习小Demo(19)利用Loader来实时接收短信
之前写过一篇文章<Android学习小Demo(13)Android中关于ContentObserver的使用>,在里面利用ContentOberver去监測短信URI内容的变化.我们先来 ...
- SQL Server错误代码及解释(留着备用)
原文:SQL Server错误代码及解释(留着备用) 转自:http://www.ajia.me/Article/193.html Code Error Message 0 操作成功完成. 1 功能 ...