C++ 数组和指针类型的关系

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
}  

 

原文链接: https://www.cnblogs.com/charley_yang/archive/2010/12/10/1902732.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 数组和指针类型的关系

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/18597

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午7:26
下一篇 2023年2月7日 下午7:26

相关推荐