第8章 概念的缺失
1、只知变量,不知对象
数据对象是C语言的一个最基本的概念。
按照C标准的定义,所谓数据对象,就是程序运行环境中数据的存储区间,该区间的内容可以表示值。
“数据对象”这样的基本概念之所以重要的原因是,概念是逻辑思维的基本元素。基本概念不清楚,根本无法精确的思考和正确的表达。而“精确地思考和正确的表达”恰恰是程序员所必须具备的最基本得职业素养,你不可能指望“朦胧诗”式的代码能让计算机正确的执行你所要求的任务。
注意:
编译通过并不一定代表代码绝对没有错误,这是C语言使用者必须了解的一个最基本的常识。
关于左值的概念
左值的意思就是它可以出现在赋值运算符的左边,其值是可以改变的。
左值并不是指可以出现在赋值运算符的左侧,实际上很多左值和赋值运算符毫无关系。
左值指的是表达式的含义是否表示一块内存。例如:
Int I = 1;
I = i+1;
这里赋值号左侧的i表示的是变量i所占据的那块内存,因此这个i是左值。而赋值号右侧的i则表示i变量的值,这就是所谓的右值。
不合格的宏
#define PI 3.1415926
#define S(r) PI*r*r
如果输入的是这样:S(1.0+2.0)
就不符合题意,所以应该这样定义:#define S(r) PI*(r)*(r)
预处理命令有三类:文件包含、宏和条件编译。
对strcpy()函数的使用需要注意的地方
Strcpy()函数调用的前提就是与两个实参相关联的字符串不能重叠,否则函数的行为是未定义的。
数组名代表什么
在什么情况下数组名可以代表整个数组,什么情况下代表指向其起始元素的指针呢?
这样总结,当数组名作为左值使用时代表整个数组,当数组名作为右值时使用代表的是其起始元素的指针。