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
}   
                    
                
                
            
        
浙公网安备 33010602011771号