首页 理论教育 C语言程序设计实践教程:指针与数组的关系与操作方式

C语言程序设计实践教程:指针与数组的关系与操作方式

时间:2023-11-01 理论教育 版权反馈
【摘要】:指针与数组的关系密切,由数组下标能完成的操作都可由指针操作实现。例如:inta[5]={2,4,6,8,10};int*p;p=&a[0];注意:指向数组的指针的类型应该与数组的类型一致。如果p指向a数组的起始地址,则●p+i与a+i均表示数组元素a[i]的地址。对指向数组(字符串)的指针变量可以进行指针的算术运算,如指针自增、自减运算,指针与整数的加减运算,目的使指针在数组(字符串)的各元素间移动。指针数组中的每一个元素都是指针变量。

C语言程序设计实践教程:指针与数组的关系与操作方式

指针数组的关系密切,由数组下标能完成的操作都可由指针操作实现。当然,使用数组下标方式,程序的可读性要强些;而使用指针方式,代码会更紧凑,利用得当,效率也会提高。

1.指向数组的指针

指向数组的指针是指这个指针指向数组的起始地址。定义方式与指向变量的指针的定义方式相同。例如:

int a[5]={2,4,6,8,10};

int *p;

p=&a[0];

注意:

(1)指向数组的指针的类型应该与数组的类型一致。

(2)数组名代表数组的起始地址,是一个常量。也就是数组的第一个元素的地址。

● 依据上面的例子,下面的两条语句等价:

p=&a[0]; // p指向数组a的起始地址

p=a; // p指向数组a的起始地址

● 依据上面的例子,下面的两条语句不等价:

p++; // 指针变量p的自增运算,表示p指向数组a的下一个元素

a++; // 错误语句,原因为:数组名a是常量,不能进行自增运算(www.xing528.com)

(3)如果p指向a数组中的某一个元素,则p+1就指向该元素的下一个元素。

(4)如果p指向a数组的起始地址,则

● p+i与a+i均表示数组元素a[i]的地址。

● *(p+i)与*(a+i)均表示p+i与a+i所指向的数组元素a[i]的值。

(5)对指向数组(字符串)的指针变量可以进行指针的算术运算,如指针自增、自减运算,指针与整数的加减运算,目的使指针在数组(字符串)的各元素间移动。对指向同一数组的两个指针变量可以做减法运算。

2.指针数组

如果一个数组的所有元素都为指针,则这个数组就是一个指针数组。指针数组中的每一个元素都是指针变量。常用的一维指针数组的定义形式如下:

类型名 *数组名[数组长度];

由于运算符[ ]的优先级高于运算符*,故数组名先与[ ]结合,表示定义的是一个数组,再与*结合,表示数组中的每一个元素都是指针类型。例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int *p1[3]={a[0],a[1],a[2]}; //a[i]表示数组a的第i行首元素的地址

指针数组p1的元素p1[0]、p1[1]、p1[2]均为整型指针,分别指向数组a的每一行的第一个元素。这里*(p1[0]+2)表示数组a的元素a[0][2]的值3。

注意:指针数组更多地用于处理多个字符串。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈