如果先使p指向数组a的首元素(即p=a),则:

(1) p++(或p+=1)。使p指向下一元素,即a[1]。 如果用*p,得到下一个元素a[1]的值。

(2) *p++。由于++和*同优先级,结合方向为自右而 左,因此它等价于*(p++)。作用是: 先得到p指向 的变量的值(即*p),然后再使p的值加1。例6.5(3)程
序中最后一个for语句: for(p=a;p<a+10;p++) cout<<*p;
可以改写为
for(p=a;p<a+10;) cout<<*p++;

(3) *(p++)与*(++p)作用不同。前者是先取*p值,然 后使p加1。后者是先使p加1,再取*p。若p的初值 为a(即&a[0]),输出*(p++)得到a[0]的值,而输 出*(++p)则得到a[1]的值。

(4) (*p)++表示p所指向的元素值加1,即 (a[0])++,如果a[0]=3,则(a[0])++的值为4。注意: 是元素值加1,而不是指针值加1。

(5) 如果p当前指向a[i],则
*(p--) 先对p进行“*”运算,得到a[i],再使p减1,
p指向a[i-1]。
*(++p) 先使p自加1,再作*运算,得到a[i+1]。 *(--p) 先使p自减1,再作*运算,得到a[i-1]。
将++和--运算符用于指向数组元素的指针变量十分 有效,可以使指针变量自动向前或向后移动,指向 下一个或上一个数组元素。例如,想输出a数组 100个元素,可以用以下语句:
p=a;
while(p<a+100) cout<<*p++;

p=a;
while(p<a+100) {cout<<*p;
p++;}
在用*p++形式的运算时,很容易弄错,一定要十分 小心,弄清楚先取p值还是先使p加1。

[C++程序设计]指向数组元素的指针的更多相关文章

  1. 【C语言】指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...

  2. 【C语言】-指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...

  3. Go 语言中的数组是一种 值类型(不像 C/C++ 中是指向首元素的指针)

    the-way-to-go_ZH_CN/07.1.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-w ...

  4. foreach() 中用指针指向数组元素,循环结束后最好销毁指针

    之前发过一次微博,今天又遇到这个问题,并且再次犯错,于是决定再加深一下. 就举php.net里的一个例子吧 $a = array('abe','ben','cam'); foreach ($a as ...

  5. 【C语言】12-指向一维数组元素的指针

    一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p ...

  6. C语言数组指针(指向数组的指针)

    注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变 ...

  7. C/C++中数组转换成指针的情况

    数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针.比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: ...

  8. [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针

    1.=================================================================== 1,数组是一块内存连续的数据.2,指针是一个指向内存空间的变 ...

  9. C/C++——C语言数组名与指针

    版权声明:原创文章,转载请注明出处. 1. 一维数组名与指针 对于一维数组来说,数组名就是指向该数组首地址的指针,对于: ]; array就是该数组的首地址,如果我们想定义一个指向该数组的指针,我们可 ...

随机推荐

  1. [POJ] 2456 Aggressive cows (二分查找)

    题目地址:http://poj.org/problem?id=2456 最大化最小值问题.二分牛之间的间距,然后验证. #include<cstdio> #include<iostr ...

  2. php生成json和js解析json

    php生成json $value=array("name"=>"dfas");echo json_encode($value); js解析json var ...

  3. LeetCode_Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  4. Windows文件居然有解锁一说,并且还会引起SignTool Error,真是昏倒!

    I'm running Windows 7 and when I try to run a batch file, it says, "The publisher could not be ...

  5. boost库使用:仿SGI-STL实现的一个树节点allocator

    ////////////////////////////////////////////////////////////////////////// //code by hzs //email: hu ...

  6. 【Android】Android布局中实现圆角边框

    设置corners_bg.xml 设置边框圆角可以在drawable-mdpi目录里定义一个xml: <?xml version="1.0" encoding="u ...

  7. 利用btrace工具监控在线运行java程序

     一.作用 可以用于对运行中java程序进行诊断监控分析,也可以用于开发阶段查看一些异常信息或者调用过程(如有些第三方代码没有源代码,不便于debug调试). 注:如果用于对在线运行系统的诊断,需 ...

  8. UVa10340.All in All

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. HTTPS证书生成原理和部署细节

    看看下面,部分电信用户访问京东首页的时候,会看到右下角有一个浮动广告: 小白用户以为是京东有意放置的,细心的用户会发现,这个 iframe 一层嵌一层的恶心广告很明显是电信/中间人通过 DNS 劫持注 ...

  10. 程序员求职之道(《程序员面试笔试宝典》)之求职有用网站及QQ群一览表

    技术学习网站 www.csdn.com www.iteye.com www.51cto.com http://www.cnblogs.com/ http://oj.leetcode.com/ http ...