原创 单片机C语言日记十三

2008-12-27 09:38 1797 3 3 分类: MCU/ 嵌入式

数组和指针:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1.数组的定义与引用


数组是一组有序数据的集合,数组中的数据具有相同的数据类型。数组必须“先定义后使用”。


形式:


数据类型 [存储器类型] 数组名[常量表达式][={常量表达式}]


第一个“常量表达式”为数组中数据的个数,可省略。


第二个“常量表达式”为数组中各数据。


用来存放字符数据的数组称为字符数组。在C语言中,字符串是作为字符数组来处理的。C语言规定以“\0”作为字符串结束字符。


2.指针


指令、常量和变量等都要存放在机器的内存单元中,而机器的内存是按字节来划分存储单元的。给内存中的每个单元都赋予一个编号,这就是存储单元的地址。各个存储单元所存放的数据称为该存储单元的内容。


指针类型数据是专门用来确定其他类型数据地址的,所以一个变量的地址就可称为该变量的指针。


一元运算符&可用于取一个对象的地址。地址运算符&只能应用于内存中的对象,即变量与数组元素。


一元运算符*是间接寻址或间接引用运算符。当它作用于指针时,将访问指针所指向的对象。


指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型。


指针变量的定义:


数据类型 [存储器类型] *指针变量名


3.指针与数组


通过数组下标所能完成的任何操作都可以通过指针来实现。用指针编写的程序比用数组下标编写的程序执行速度快,但用指针实现的程序理解要困难一点。


对数组元素a的引用也可以写成*(a+i)这种形式。&aa+i的含义也是相同的。


数组名和指针之间有一个不同之处:指针是一个变量,但数组名不是变量。


4.指针的运算


1)相同指针类型之间的赋值运算;


2)指针与整数之间的加减运算;


3)指针之间的比较运算(指向相同数据类型的指针)。


所有的指针运算都会自动考虑它所指向的对象的长度。


5.其他的指针


1)字符指针


字符串常量可以通过一个指向其第一个元素的指针访问。


2)指针数组


由于指针本身也是变量,所以它们可以像其他变量一样存储在数组中,把这种数组称为指针数组。


3)指针的指针


指向指针型数据的指针变量,即指针型指针变量。


4)函数型指针


将函数的入口地址赋给一个指针,该指针就是函数型指针。


5)空指针(抽象型指针)


指向void类型的指针可以存放指向任何类型的指针,但不能间接引用其自身。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条