指针和数组的联系

您所在的位置:网站首页 数组和指针作为函数的参数有什么联系与区别 指针和数组的联系

指针和数组的联系

#指针和数组的联系| 来源: 网络整理| 查看: 265

指针与数组的区别和联系

2010-06-27 22:29:04

分类:

C/C++

一.指针与数组的联系:

指针与数组是

C

语言中很重要的两个概念,它们之间有着密切的关系,利

用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针

与数组之间的联系及在编程中的应用。

1

.指针与数组的关系

当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如:

char str[20], *ptr;

ptr=str;

ptr

被置为数组

str

的第一个元素的地址,因为数组名就是该数组的首地址,

也是数组第一个元素的地址。

此时可以认为指针

ptr

就是数组

str

(反之不成

立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既

可以用下标变量访问,也可以用指针访问。

2

.指向数组元素的指针

若有如下定义:

int a[10], *pa;

pa=a;

p=&a[0]

是将数组第

1

个元素的地址赋给了指针变量

p

实际上,

C

语言中数组名就是数组的首地址,所以第一个元素的地址可以

用两种方法获得:

p=&a[0]

p=a

这两种方法在形式上相像,其区别在于:

pa

是指针变量,

a

是数组名。值

得注意的是:

pa

是一个可以变化的指针变量,而

a

是一个常数。因为数组一经

被说明,数组的地址也就是固定的,因此

a

是不能被赋值不能改变的,不允许

使用

a

++、++

a

或语句

a

=10

,而

pa

++、++

pa

pa

=10

则是正确的。

由此可见,此时指针与数组融为一体。

3

.指针与一维数组

理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储

组织形式和对数组元素的访问方法。

一维数组是一个线形表,它被存放在一片连续的内存单元中。

C

语言对数

组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由

下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元

地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。

实际上编译系统将数组元素的形式

a[i]

转换成

*(a

i)

,然后才进行运算。对

于一般数组元素的形式:

[]

,编译程序将其转换成:

*(

)

,其中下标表达式为:下标表达式

*

扩大因子。整个式

子计算结果是一个内存地址,最后的结果为:

*=

。由此可见,

C

语言对数组的处理,实际上是转换成指针地址的运算。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3