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

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

简介

注意

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

一、指针的算术操作

  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;

你可能感兴趣的:(指针,数组元素)