c++primer 4.2指针(下)使用指针访问数组元素

来源:互联网 发布:java实现md5加密算法 编辑:程序博客网 时间:2024/06/11 15:16

      • 简介
      • 注意
    • 一指针的算术操作
    • 二计算数组的超出末端指针
    • 三输出数组元素

简介

注意

================================================

一、指针的算术操作

  1. 指针加上或减去一个整型数值等于获得一个新指针;
  2. 两个指针相减表示两个指针所指向的元素间隔的对象, ptrdiff_t n=ip2-ip
    ,其中ptrdiff_t是和size_t一样的类型,只不过它是signed整型(前提是指向同一个数组的指针)。

  3. size_t 类型用于指明数组长度,必须是一个正数。

  4. 允许在指针上减0,使指针保持不变,如果一个指针具有0值(空指针)则在该指针上加0仍然是合法的,结果还是一个值为0的指针

二、计算数组的超出末端指针

  1. vector 类型提供的end操作将返回指向超出vector末端位置的一个迭代器,这个迭代器常用作哨兵,用来控制处理vector中元素的循环,同样的,我们可以计算数组的超出末端指针的值
const size_t array_size=5; //数组下标的类型必须是const的size_t的类型int arr[arr_size]={1,2,3,4,5};int *p=arr;int *p2=p+arr_size;//p2指向第五个元素,即数组超出末端的位置,C++允许计//算超出末端的位置,但不允许对此地址进行解引用操作。

三、输出数组元素

const size_t arr_sz=5;int int_arr[arr_sz]={0,1,2,3,4};for(int*pbegin=int_arr,*pend=int_arr+arr_sz;pbegin!=pend;pbegin++){cout<<*pbegin<<" ";}
for(vector<int>::iterator  iter=ivec.begin();iter!=ivec.end();++iter)*iter=0;
0 0