C++ 数组和指针类型的关系
时间:2010-12-10 来源:charley_yang
类似地 为了访问相应的值 我们可以取下列两种方式之一
// 两者都得到第一个元素的值
*ia;
ia[0];
我们知道怎样用下标操作符来访问第二个元素的地址
&ia[1];
同样 下面这个表达式
ia+1;
也能得到第二个元素的地址等等 类似地 下面两个表达式都可以访问第二个元素的值
*(ia+1);
ia[1];
但是 如下的表达式
*ia + 1; // 解引用操作符比加法运算符的优先级高,结果是将第一个元素加1
与下面的表达式完全不同
*(ia + 1); // 括号运算符比解引用操作符的优先级高,结果是得到第二个元素的值
2.
通过指针遍历数组
#include <iostream>
template <class elemType> //模板函数
void print( elemType *pbegin, elemType *pend )
{
//pend指针执行最后一个元素的下一位
while ( pbegin != pend ) {
cout << *pbegin << ' ';
++pbegin;
}
}
//主函数
int main()
{
int ia[9] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };
double da[4] = { 3.14, 6.28, 12.56, 25.12 };
string sa[3] = { "piglet", "eeyore", "pooh" };
print( ia, ia+9 ); //第二个参数指针 指向数组最后一个元素的下一位
print( da, da+4 ); //da+3+1
print( sa, sa+3 ); //sa+2+1
}