A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq103613 中级黑马   /  2015-7-27 22:52  /  751 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#warning 怎么理解数组指针?

这是一个指针!  指向数组第一个元素地址的指针


注意:
1)数组名a不代表整个数组,只代表数组首元素的地址。
“p=a;”的作用是“把a数组的首元素的地址赋给指针变量p”,而不是“把数组a各元素的值赋给 p”


int a[3] = {1,2,3};
int *p = &a[0];      &a[0] == a --->  数组首地址

&a[0]+1 = ?  &a[1]

a+1 = ?      &a[1]

p+1 = ?      &a[1]



#warning  怎么使用?
如果指针变量p已指向数组中的一个元素,
则p+1指向同一数组中的下一个元素,
//p-1指向同一数组中的上一个元素。



结论: 引用一个数组元素,可用下面两种方法:
(1)下标法,如a[i]形式
(2)指针法,如*(a+i)或*(p+i)
(3)a是常量(a++错误),p是变量(p++正确)



有一个整型数组a,有10个元素,要求输出数组中的全部元素
解题思路:
引用数组中各元素的值有3种方法:
(1)下标法;
(2)通过数组名计算数组元素地址,找出元素的值;
(3)指针

2 个回复

倒序浏览
顶一顶~~~~!!!
回复 使用道具 举报
int a[3] = {1,2,3};
int *p = &a[0];      &a[0] == a --->  数组首地址

&a[0]+1 = ?  &a[1]

a+1 = ?      &a[1]     这里真的是这样的吗, 难道不是越界了吗?  (&a)+1  

p+1 = ?      &a[1]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马