1.
已知下面的數組定義
int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };
那麼 只簡單寫
ia;
意味著什麼呢
數群組識別碼代表數組中第一個元素的地址 它的類型是數組元素類型的指標 在ia這個例子中 它的類型是 int* 因此 下面兩種形式是等價的 它們都返回數組的第一個元素的地址
ia;
&ia[0];
類似地 為了訪問相應的值 我們可以取下列兩種方式之一
// 兩者都得到第一個元素的值
*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
}