数组和指针:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1.数组的定义与引用
数组是一组有序数据的集合,数组中的数据具有相同的数据类型。数组必须“先定义后使用”。
形式:
数据类型 [存储器类型] 数组名[常量表达式][={常量表达式}]
第一个“常量表达式”为数组中数据的个数,可省略。
第二个“常量表达式”为数组中各数据。
用来存放字符数据的数组称为字符数组。在C语言中,字符串是作为字符数组来处理的。C语言规定以“\0”作为字符串结束字符。
2.指针
指令、常量和变量等都要存放在机器的内存单元中,而机器的内存是按字节来划分存储单元的。给内存中的每个单元都赋予一个编号,这就是存储单元的地址。各个存储单元所存放的数据称为该存储单元的内容。
指针类型数据是专门用来确定其他类型数据地址的,所以一个变量的地址就可称为该变量的指针。
一元运算符&可用于取一个对象的地址。地址运算符&只能应用于内存中的对象,即变量与数组元素。
一元运算符*是间接寻址或间接引用运算符。当它作用于指针时,将访问指针所指向的对象。
指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型。
指针变量的定义:
数据类型 [存储器类型] *指针变量名
3.指针与数组
通过数组下标所能完成的任何操作都可以通过指针来实现。用指针编写的程序比用数组下标编写的程序执行速度快,但用指针实现的程序理解要困难一点。
对数组元素a的引用也可以写成*(a+i)这种形式。&a和a+i的含义也是相同的。
数组名和指针之间有一个不同之处:指针是一个变量,但数组名不是变量。
4.指针的运算
(1)相同指针类型之间的赋值运算;
(2)指针与整数之间的加减运算;
(3)指针之间的比较运算(指向相同数据类型的指针)。
所有的指针运算都会自动考虑它所指向的对象的长度。
5.其他的指针
(1)字符指针
字符串常量可以通过一个指向其第一个元素的指针访问。
(2)指针数组
由于指针本身也是变量,所以它们可以像其他变量一样存储在数组中,把这种数组称为指针数组。
(3)指针的指针
指向指针型数据的指针变量,即指针型指针变量。
(4)函数型指针
将函数的入口地址赋给一个指针,该指针就是函数型指针。
(5)空指针(抽象型指针)
指向void类型的指针可以存放指向任何类型的指针,但不能间接引用其自身。
文章评论(0条评论)
登录后参与讨论