现在的位置: 首页 > 综合 > 正文

数组与指针的不同点

2013年08月21日 ⁄ 综合 ⁄ 共 952字 ⁄ 字号 评论关闭

※※※※※※※※※※※※※※※※数组与指针的不同※※※※※※※※※※※※※※※※※※※※※※※※※※17:26 2008-1-24           BY:CHLAWS

·区分定义和声明
定义是一种特殊的声明,它创建了一个对象;声明简单地说明了在其他地方创建的对象的名字,它允许你使用这个名字.

声明相当于普通的声明:它所说明的并非本身,而是描述其他地方的创建对象.
定义相当于特殊的声明:它为对象分配内存.

指针变量本身始终位于同一个地址,但它的内容在任何时候都可以不相同.指向不同地址的变量.

数组和指针区别
__________________________________________________________________________________
指针
1.保存地址
2.间接访问数据,首先取得指针的内容,把它作为地址,然后从这个地址提取数据.如果指针有一个下标[I],就是把指针的内容加上I作为地址,从中获取数据.
3.通常用于动态数据结构
4.相关函数为malloc,free...
5.通常指向匿名数据.
/*add*/

数组
1.保存数据.
2.直接访问数据.a[I]只是简单地加以a+I为地址取得数据.
3.通常用于存储固定数目且数据类型相同的元素.
4.隐式分配和删除.
5.自身即为数据名.
/*add*/

声明一个数组时,编译器将根据声明所指定的元素数量为数组保存内存空间,然后再创建数组名,它的值是一个常量,指向这段空闲空间的起始位置。声明一个指针变量时,编译器只为指针本身保留空间,它并不为所指向的任何类型分配内存空间。它是一个自动变量指向不确定的任何位置。

数组虽然在编译下被解释为指针,但是各自的情况下引用的实际类型和指针还是不同的。在引用的情况下,数组是直接引用,而指针是间接引用。

__________________________________________________________________________________________
在ASCI C中初始化指针时所创建的字符串常量被定义为只读.如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为.
对指针在初始化时只能用字符串进行初始化.不能用浮点型之类的常量分配空间.

相对与指针,数组可以初始化后可以修改.
 

抱歉!评论已关闭.