原创 【博客大赛】《C和指针》摘抄整理型笔记九

2014-10-11 16:26 1585 11 13 分类: 处理器与DSP 文集: C和指针

/*

读书笔记类型多种多样,有摘抄型的,有感想型的,有批注型的,有摘要型的……

现在正在研读《C和指针》,其中有很多我认为必要的知识点,摘抄并简单整理了一下,记录在这里。

*/

 

59. UINXMS-DOS等操作系统中,会让用户通过命令行编写参数来启动一个程序的执行。这些参数通过两个形参传递给main函数。main函数原型:

   int main( int argc, char **argc );

argc是一个整数,用于表示参数的数量。argv是一个指向指针的指针,它指向一个序列的字符型指针,该序列中的每个指针指向一个命令行参数,该序列以一个NULL指针作为结束。其中第1个参数就是程序的名字,程序可以通过对argv使用间接访问来访问命令行参数。

 

60. 书中介绍的把16进制数转成一个个字符的代码片段:

   remainder = value % 16;

   if( remainder < 10)

      putchar( remainder + ‘0’ );

   else

      putchar( remainder – 10 + ‘A’ );

 

61. 字符串常量实际上是指针,指向字符的指针。

   1 “xyz” + 1;——这个表达式的结果是个指针,指向字符串的第2个字符y.

   2 *”xyz”;——这是对指针进行间接访问,结果就是x.

   3 “xyz”[2];——这是一个合法的表达式,值为z.

出现在表达式中的字符串常量是一个常量指针,它指向字符串的第1个字符,和数组名一样,既可以用指针表达式,也可以用下标来使用字符串常量。

 

62. 编译C程序的第1个步骤称为预处理(preprocessing)阶段,在这个阶段C预处理器(preprocessor)对源代码进行文本性质的操作,主要任务包括删除注释、插入被#define指令包含的文件内容、定义和替换#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。

 

63. #define定义的内容较长时,可以分成几行,除最后一行外,每行的末尾都要加一个反斜杠(\),如:

   #define DEBUG_PRINT printf( “File %s line %d:” \

                            “x=%d, y=%d, z=%d”, \

                            __FILE__, __LINE__, \

                            x, y, z )

宏定义的这种技巧不应被滥用。如果相同的代码需要出现在程序多个地方,通常更好的方法是把它实现为一个函数。

上述代码片段中有一些符号,如__FILE__是预处理器符号,常用的预处理器符号有5个,详见下表:

 

无标题.jpg

 

64. 所有用于对数值表达式进行求值的宏定义都应该在必要之处加上括号,避免在使用宏时,由于参数中的操作符或邻近的操作符之间不可预料的相互作用。如:

   #define DOUBLE(x)           ( (x) + (x))

 

65. 有些任务既可以用宏实现,也可以用函数实现,宏的一个优点是与类型无关,而且宏的执行速度快于函数,因为宏不存在函数调用、返回的开销。但是使用宏通常会增加程序的长度,但函数不会。另外,具有副作用的参数可能在宏的使用过程中产生不可预料的结果,而函数参数的行为更容易预测。

 

66. #pragma指令因编译器而异,允许编译器提供不标准的处理过程,比如向一个函数插入内联的汇编代码等。/*比如TIC2000DSP,可以用#pragma指令来产生用户定义的段,详见CMD文件*/

文章评论2条评论)

登录后参与讨论

2107284193_107424336 2014-10-14 10:54

//deleted

452450754_660517118 2014-10-11 23:02

总结的真棒,要向你学习这样的好习惯
相关推荐阅读
飞言走笔 2017-01-06 21:56
2017,新的博客旅程
EDNChina 改版终于成功了!祝贺! 2017年,开始新的旅程~ ...
飞言走笔 2016-06-01 10:17
【博客大赛】《白鹿原》读后
《白鹿原》这本书已经买了很久,多次以来,都是只翻看几页,顶多几章就放下了,觉得这是一个大部头,得有足够的时间才行。前几天陈忠实先生去世的消息传来,让我很震惊和惭愧。 一口气读完这本书,畅快淋漓,又意...
飞言走笔 2016-03-26 16:42
【博客大赛】《毛斯朝》读后
这本书最早是在凤凰卫视曾子墨主持的一期关于沈志华先生的《世纪大讲堂》节目中知晓的。但是一直拖到今天才读完。 说实话,书的主要内容与当前官方的宣传口径有很多不一致的地方,而沈先生作为中国掌握苏联档...
飞言走笔 2016-03-08 13:46
【博客大赛】蓝牙4.0低功耗技术及其认证要求
详见附件 ...
飞言走笔 2016-02-02 14:20
【转】蓝牙4.0协议官方手册(一)——通用属性配置文件
转自:http://blog.csdn.net/jinzhichaoshuiping/article/details/43370009 通用属性配置文件 (GATT)——该说明书定义了通用属性配置...
飞言走笔 2016-01-31 23:24
【博客大赛】脑洞大开、三观重塑——《人类简史》读后
终于读完了《人类简史》,没有把这本书拖到二月份,这也是2016年读完的第一本书。之前也有所耳闻,但是没有太在意,倒是罗胖子的跨年演讲上偶然提到,不知怎么就勾起了阅读此书的欲望。 本文的标题用了“脑洞...
我要评论
2
11
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /2 下一条