您的位置:首页 > 其它

再读《C和指针》(笔记)

2015-08-16 21:45 190 查看
第一章

在C中不存在“string”数据类型,但存在一个约定:字符串就是一串以NUL字节结尾的字符。NUL虽然作为字符串的终止符,但它却不会被看做字符串的一部分。

NUL是ASCII字符集的‘\0’字符的名字,它的字节模式是全0。

NULL指向一个其值为0的指针。NULL和NUL都是整形,值也相同,所以他们互相可以换着使用。但还是应该使用正确的常量,因为它能告诉阅读程序的人,你想使用的不仅是0这个值,而且还能告诉他使用这个值的目的。

NULL在头文件stdio.h中定义。而且不存在预定义的符号NUL,所以如果想使用它而不是字符常量'0\',就必须自己定义。

C可以把赋值操作蕴含于while语句内部,这样就可以消除冗余。如下:

while( (ch = getchar()) != EOF && ch != '\n')

{

    ;

}

(循环体里可以不做任何事,所以花括号可以不要,但分号必须。)

而其他语言要处理上面的情况一般会这么写:

ch = getchar();

while(ch != EOF && ch != '\n')

{

    ch = getchar();

}

这里就出现了两次ch = getchar()。

其次,这里还有个问题,一般情况下我们都把ch申明为一个整形,为什么要用一个整形来读取字符?

因为EOF是一个整形值,它的位数比字符类型要多,把ch申明为整形就可以防止从输入读取的字符意外地被解释为EOF,同时也意味着接收字符的ch这个变量的位数应该要比ch大,至少要比EOF大,这样才能容纳EOF,而且字符也只是小一点的整数而已,所以用整形变量来容纳字符不会有任何问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: