打印

【转】C和指针 (pointers on C)——1

[复制链接]
896|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecintop|  楼主 | 2014-7-26 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
总结:提出了stdio.h中一些基本的函数,如scanf(),printf(),getchar(),putchar(),gets(),puts()等io函数。
关于NULL和NUL的区别也说了一些。
NUL也就是字符串中的截尾字符'\n',并不存在与预处理中。
NULL是stdio中定义好的字符,表示指针为空,为整型0。
EOF也是stdio种定义好的字符,表示为指针指向文档的结尾。

相关帖子

沙发
elecintop|  楼主 | 2014-7-26 20:51 | 只看该作者
警告:
1、在scanf函数的标量参数前并未添加&字符。
首先是标量参数,举个例子,数组元素参数是标量参数。它通过值传递来通过main和函数间传递。
&符号在这里是寻址。如果是数组参数,它本身是个地址,所以就不需要做寻址运算了。
2、机械地把printf函数的格式代码照搬于scanf函数。
3、在应该使用&&操作符的地方误用了&操作符。
一个是逻辑操作符,一个是寻址。一般细心都可以避免这个问题。
4、误用=操作符而不是==操作符来测试相等性。
同上,不过这个问题好像犯错的人更多一些。
尤其是在if、while判断中经常出现。
如:while(pointer==EOP)

使用特权

评论回复
板凳
elecintop|  楼主 | 2014-7-26 20:52 | 只看该作者
编程提示:
1、使用#include指令避免重复声明。同时在#include 里面放置函数的原型。
2、使用#define 指令给常量命名。
3、使用数组下标前先检查他们的值。
如:ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
这是个好习惯。

使用特权

评论回复
地板
elecintop|  楼主 | 2014-7-26 20:52 | 只看该作者
4、在while/if表达式中蕴含赋值操作。
如:
ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
就可以写成:
while((ch = getchar()) != EOF && ch != '\n')

使用特权

评论回复
5
elecintop|  楼主 | 2014-7-26 20:53 | 只看该作者
这样,就可以消除冗余语句。你可以理直气壮地声称这种可读性非常差的代码技巧应该避免使用。我也可以理直气壮地告诉你,这是因为你对C不是很熟。
大牛们在读代码的时候根本不会出现任何问题。

使用特权

评论回复
6
elecintop|  楼主 | 2014-7-26 20:53 | 只看该作者
5、如何编写一个空循环体。
while((ch = getchar()) != EOF && ch != '\n')
;
这个分号是非常重要的,否则下一句不相关的语句就会被拖入while循环。

使用特权

评论回复
7
elecintop|  楼主 | 2014-7-26 20:54 | 只看该作者
6、如何进行检查,确保数组不越界。
比如在存数组中,必需包括以下:
1、如果输入行结束或者输入行数组已满,跳出循环break;
2、如果输出行数据空间不够,只赋值可以容纳的数据;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

1329

帖子

3

粉丝