您的位置:首页 > 编程语言 > C语言/C++

c语言学习之数组指针

2016-04-27 12:50 281 查看
首先,指针,就相当于一个地址,指针变量就是拿来存放指针所指向另一变量的地址;定义一个指针变量需要说明:指针类型,指针变量名。例:int *p,a;p=&a;
而数组,包括数组类型和数组名还有数组长度(数组长度只能是常量);数组有一维数组和多维数组。例:int a[10];[]内的必须是常量。

那究竟什么是数组指针呢?

顾名思义,就是数组的指针。其中,对数组来说,数组名就是数组在内存存放的首地址。因为指针变量是拿来存放另一变量的地址,所以指针变量可以存放数组的地址,也可以存放数组元素的地址。所以引用数组或数组元素可以以使用指针变量。int *p,a[10];p=a(p指向数组a的0号元素);/*因为数组名相当于首地址*/。

当指针指向数组时,还可以做一些指针运算。

(1)例:int *p,a[10];p=a;p++;/*  p+1,它指向a[1]  */;指针变量每增加1,地址字节值得增量就等于基类型字节数。(2)两个指针之间还可以相减,得到一个整数,该整数等于二者之间相差的元素个数(两者的地址字节值之差除以基类型字节数)注意:两个指针之间不能进行加、乘、除等算术运算。(3)两个指针类型还可以比较运算(<、<=、>、>=、!=、==),但指针类型不同不能比较,比较时是用它们的地址值进行比较。(4)c语言中设置了“NULL”称为空指针,可以赋给任何指针类型的变量而且可以和任何类型指针做“==和!=”比较,不能做(<、<=、>、>=)比较。

如何通过指针访问数组元素呢?

例如:

int a[10],*p=a;//定义数组和指针变量并让指针p指向数组的首地址。

int i;

其中,表达式p[i]和*(p+i)和*(a+i)和a[i]相等,都表示数组a中i号元素。注意:p+i或a+i则表示b[i]的地址&b[i]。/*  &为取地址符  */
;还有a是符号常量,不能给a赋值。

c语言对地址不做越界检查,使用指针时自己控制好地址的边界。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 指针