C语言基本教程(四)指针、布局、连系和列举(1)
本节专门对第二节曾报告过的指针作一详述。并先容Turbo C新的数据范例:布局、连系和列举,个中布局和连系是以前讲过的五种根基数据范例(整型、浮点型、字符型、指针型和无值型)的组合。列举是一个被定名为整型常数的荟萃。
最后对范例说明(typedef)和预处理惩罚指令作一叙述。
1、 指针(point)
进修Turbo C语言,假如你不能用指针编写有效、正确和机动的措施,可以认为你没有学好C语言。指针、地点、数组及其彼此干系是C语言中最有特色的部门。类型地利用指针, 可以使措施到达简朴明白,因此,我们不单要学会如何正确地利用指针,并且要学会在各类环境下正确地利用指针变量。
1. 指针和地点
1.1 指针根基观念及其指针变量的界说
1.1.1 指针变量的界说
我们知道变量在计较机内是占有一块存贮区域的,变量的值就存放在这块区域之中,在计较机内部,通过会见或修改这块区域的内容来会见或修改相应的变量。Turbo C语言中,对付变量的会见形式之一, 就是先求出变量的地点,然后再通过地点对它举办会见,这就是这里所要阐述的指针及其指针变量。
所谓变量的指针,实际上指变量的地点。变量的地点固然在形式上好象雷同于整数,但在观念上差异于以前先容过的整数,它属于一种新的数据范例,即指针范例。Turbo C中,一般用"指针"来指明这样一个表达式&x的范例,而用 "地点"作为它的值,也就是说,若x为一整型变量,则表达式&x的范例是指向整数的指针,而它的值是变量x的地点。同样,若double d; 则&d的范例是指向以精度数d的指针,而&d的值是双精度变量d的地点。所以,指针和地点是用来论述一个工具的两个方面。固然&x、&d的值别离是整型变量x和双精度变量d的地点,但&x、&d的范例是差异的,一个是指向整型变量x的指针,而另一个则是指向双精度变量d的指针。在习惯上,许多环境下指针和地点这两个术语混用了。
我们可以用下述要领来界说一个指针范例的变量。
int *ip;
首先说明白它是一指针范例的变量,留意在界说中不要漏写标记"*",不然它为一般的整型变量了。别的,在界说中的int暗示该指针变量为指向整型数的指针范例的变量,有时也可称ip为指向整数的指针。ip是一个变量,它专门存放整型变量的地点。
指针变量的一般界说为:
范例标识符 *标识符;
个中标识符是指针变量的名字,标识符前加了"*"号,暗示该变量是指针变量,而最前面的"范例标识符"暗示该指针变量所指向的变量的范例。一个指针变量只能指向同一种范例的变量,也就是讲,我们不能界说一个指针变量,既能指向一整型变量又能指向双精度变量。
指针变量在界说中答允带初始化项。如:
int i, *ip=&i;
留意,这里是用&i对ip初始化,而不是对*ip初始化。和一般变量一样,对付外部或静态指针变量在界说中若不带初始化项,指针变量被初始化为NULL,它的值为0。Turbo C中划定,当指针值为零时,指针不指向任何有效数据,有时也称指针为空指针。因此,当挪用一个要返回指针的函数(第五节中先容)时,常利用返回值为NULL来指示函数挪用中某些错误环境的产生。