请先看C++中的指针概述,这里只是扩充
数组指针
其实这里主要说的就是c++中的指针运算
/*
数组元素指针:
一个变量有地址,一个数组包含若干个元素,每个数组元素都有相应的地址,
指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中)
所谓数组元素的指针就是数组元素的地址
可以用一个指针变量指向一个数组元素
int a[10]={1,2,3,4,5,6,7,3,2,3};
int *p;
p=&a[0]; 等同与 p=a; 等同与 int *p=a; 等同与 int*p=&a[0]
注意:
1) 数组名a不代表整个数组,只代表数组首元素的地址
p=a 的作用是"把a数组的首元素的地址赋给指针变量p",而不是"把数组a各个元素的值赋给p"
数组指针:
指向数组元素的指针
数组指针的作用:
使用数组指针间接访问数组的元素
数组指针的定义:
int *p;
数组指针的初始化;
int a[4] ={1,2,3,4};
int *p = a;//数组指针,定义了一个指针变量p赋值数组的首地址(第一个元素的地址),P指向数组的第一个元素
int *p = &a[0];//等价上面一句话
数组指针如何访问数组的元素:
1) p+1 表示指向数组的下一个元素
2) p-1 指向数组的上一个元素
误区:
用数组指针遍历数组
for(int i=0;i<4; i++){
printf("%d\t",*p++);
}
//学习的误区: 数组名 a 是一个常量 等同与 *(10++)
//数组名++ 这是错误的
printf("*a=%d\n",*a++);//这种写法是错误的
*/
原文:http://www.cnblogs.com/developer-wang/p/4488993.html