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、如果输出行数据空间不够,只赋值可以容纳的数据;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Chapter 7 Chapter 8 Chapter 9 Chapter 10 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Chapter 17 Chapter 18 Contents A Quick Start ........................................................................................................ 1 Basic Concepts ...................................................................................................... 7 Data ....................................................................................................................... 11 Statements ............................................................................................................. 15 Operators and Expressions .................................................................................... 23 Pointers .................................................................................................................. 29 Functions ............................................................................................................... 37 Arrays .................................................................................................................... 43 Strings, Characters, and Bytes .............................................................................. 55 Structures and Unions ........................................................................................... 69 Dynamic Memory Allocation ................................................................................ 75 Using Structures and Pointers ............................................................................... 79 Advanced Pointer Topics ...................................................................................... 87 The Preprocessor ................................................................................................... 93 Input/Output Functions .......................................................................................... 95 Standard Library .................................................................................................... 119 Classic Abstract Data Types ................................................................................. 129 Runtime Environment ........................................................................................... 145

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值