【读书笔记之《C和指针》】——第一章:快速上手

一.重排字符

1.空白和注释

1.注释不能嵌套
2.注释掉代码除了“//”和“/”还可以使用#if指令,#if是从逻辑上删除一段C代码,而//和/*并不能将其从源文件中删除

#if 0
	statements
#endif

#if和#endif之间的代码可以有效的从程序中去除

2.预处理指令

1.预处理指令是由预处理器解释的;
2.预处理器解释过程:①读入源代码②根据预处理指令对其进行修改③把修改过的源代码递交给编译器

例如:预处理器用名叫stdio.h的库函数头文件的内容替换第1条#include指令语句

1.另一种预处理指令是#define,被它定义的量叫做字面值常量,这些常量不能出现于有些普通变量可以出现的场合(比如赋值操作符的左边);
2.#define指令和其他语言中符号常量的作用类似,出发点也相同

const:被const修饰的函数,表示函数将不会修改函数调用者所传递的这两个参数,一般用于自定义函数中定义的指针前面
例如:int mystrlen(const char*str)

提示:
假如这个程序的源代码由几个源文件所组成,那么使用该函数的源文件都必须写明该函数的原型。把原型放在头文件中并使用#include指令包含它们,可以避免由于同一个声明的多份副本而导致的维护性问题。

3.main函数

main函数是程序执行的起点。

将变量的值传给函数时,分为传值调用传址调用。传值调用改变形参的值,实参的值不会改变,而传址调用会改变实参的值。

gets函数以一个换行符结尾。当gets函数被调用但事实上不存在输入行时,它就返回NULL值(NULL指一个其值为0的指针,NUL是ASCII字符集中’\0’字符的名字,他们都是整型值;NUL不存在预定义的符号,所以如果你想使用它而不是字符常量‘\0’,就必须自行定义)。

printf函数接受多个参数,其中第一个参数是一个字符串,描述输出的格式,剩余的参数就是需要打印的值。

4.read_column_numbers函数

scanf函数的返回值是函数成功转换并存储于参数中的值的个数

警告:
使用所有格式码(除%c之外)时,输入之前的空白(空格、制表符、换行符)会被跳过,值后面的空白表示该值的结束,因此,使用%s格式码输入字符串时,中间不能包含空白

整数 会转换为 二进制数存储于数组元素中

while((ch=getchar()) != EOF && ch != '\n'
while循环将读取并丢弃这些剩余的字符,防止它们被解释为第1行数据。

剔除输入行最后的剩余字符:
(ch = getchar() ) != EOF && ch != '\n'
首先,getchar函数从标准输入读取一个字符并返回它的值。如果输入中不再存在任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾;
从getchar函数返回的值被赋给变量ch,然后把它于EOF进行比较。如果ch等于EOF,整个表达式的值为假,循环停止。若非如此,再把ch与换行符进行比较,如果两者相等,循环终止。因此,只有当输入尚未达到文件尾并且输入的字符并非换行符时,表达式的值才是真的(循环继续)。这样这个循环就能剔除当前输入行最后的剩余字符

ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar
它将读取一个字符,接下来如果我们尚未达到文件的末尾或·读取的字符并不是换行符,它将继续读取下一个字符。

为什么ch被声明为整型,而我们却用它来读取字符?
因为EOF是一个整型值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但同时,这也意味着接收字符的ch必须足够大,足以容纳EOF,字符只是小整型数而已,所以用一个整型变量容纳字符值并不会引起任何问题。

const的两个作用:1.声明该函数的作用意图是这个参数不能被修改;2.它导致编译器去验证是否违背该意图

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH_modest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值