大多数人并不认为有几类人猿学校计划非常赞同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)——第一章:高速启动的更多相关文章

  1. 《C和指针》读书笔记——第一章 快速上手

    1.注释代码可以用: #if 0 statements #endif 2.参数被声明为const,表明函数将不会修改函数调用者的所传递的这个参数. 3.scanf("%d",&am ...

  2. flask第一章 flask启动 路由视图 FlaskRequest jinja2 FlaskSession

    一.简单了解flask web框架 优点: 小而精,组件只有session,第三方机构强烈支持flask,极其简单 缺点: 由于第三方软件的关系,稳定性相对较差,flask-session 扩展知识: ...

  3. Netty源码分析第1章(Netty启动流程)---->第1节: 服务端初始化

    Netty源码分析第一章:  Server启动流程 概述: 本章主要讲解server启动的关键步骤, 读者只需要了解server启动的大概逻辑, 知道关键的步骤在哪个类执行即可, 并不需要了解每一步的 ...

  4. Netty源码分析第1章(Netty启动流程)---->第2节: NioServerSocketChannel的创建

    Netty源码分析第一章:  Server启动流程 第二节:NioServerSocketChannel的创建 我们如果熟悉Nio, 则对channel的概念则不会陌生, channel在相当于一个通 ...

  5. Netty源码分析第1章(Netty启动流程)---->第3节: 服务端channel初始化

    Netty源码分析第一章:Netty启动流程   第三节:服务端channel初始化 回顾上一小节的initAndRegister()方法: final ChannelFuture initAndRe ...

  6. Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用

    Netty源码分析第一章:Netty启动流程   第四节:注册多路复用 回顾下以上的小节, 我们知道了channel的的创建和初始化过程, 那么channel是如何注册到selector中的呢?我们继 ...

  7. Netty源码分析第1章(Netty启动流程)---->第5节: 绑定端口

    Netty源码分析第一章:Netty启动步骤 第五节:绑定端口 上一小节我们学习了channel注册在selector的步骤, 仅仅做了注册但并没有监听事件, 事件是如何监听的呢? 我们继续跟第一小节 ...

  8. 《C与指针》第十二章练习

    本章例程 //12.3 #include <stdio.h> #include <stdlib.h> typedef struct NODE{ struct NODE *lin ...

  9. 第一章.C语言简介

    C语言第一章 C语言简介   目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...

随机推荐

  1. Android - 和其他APP交互 - 把用户带到其他app

    Android的重要功能之一就是app可以根据要执行的操作让用户启动另外一个app.例如,app有一个商业地址然后想要在地图上显示,并不需要在app中加一个显示地图的activity,可以直接用Int ...

  2. Android - 用Fragments实现动态UI

    要在Android上实现动态的多窗口的用户交互界面,需要把UI组建和activity放到modules中, 这样才能划进划出activity.可是使用Fragment类来创建modules,它就像一个 ...

  3. hdu 1226 BFS + bfs记录路径

    http://acm.hdu.edu.cn/showproblem.php? pid=1226 为了节省空间.您可以使用vis初始化数组初始化-1. 发现BFSeasy错了地方 始一直WA在这里:就是 ...

  4. 导致Asp.Net站点重启的10个原因

    原文:导致Asp.Net站点重启的10个原因 Asp.Net站点有时候会莫名其妙的重启,什么原因导致的却不得而知,经过一番折腾后,我总结了导致Asp.Net站点重启的10个原因 1. 回收应用程序池会 ...

  5. 又一次认识HTML,CSS,Javascript 之node-webkit 初探

    今天我们来系统的.全面的 了解一下前端的一些技术,将有助于我们写出 更优秀的 产品 出来. 什么是HTML? HTML 是用来描写叙述网页的一种语言. HTML 包括一些根节点.子节点,文本节点.属性 ...

  6. 合理设置MTU,提升下载速度

    可能很少有雷友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...

  7. SDUT 2498-AOE网上的关键路径(spfa+字典序路径)

    AOE网上的关键路径 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 一个无环的有向图称为无环图(Directed Acycl ...

  8. iOS_20_微博的骨架结构

    最后效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 1 ...

  9. cocos2d-x3.x屏蔽遮罩层屏蔽触摸button

    cocos2d-x3.x触摸方法改变后,.屏蔽掉的层实际上触摸事件的非常easy,首先touchbegan一定要回true,第二,该事件被设定为听吞没触摸true.最近登录触摸水平必须低于0,现在,我 ...

  10. css Tab选项卡1

    利用   锚点原理 以及overflow:hiden 结合,实现纯  css  tab 方式 兼容ie6 + 适合单个tab   不需要js          注意点  红色方框的   a 对应a   ...