以指针方式访问数组几种不同形式输出语句解析

本文通过具体实例详细解析了使用指针访问数组的不同形式及其输出结果,对比了多种输出表达式的区别,并深入探讨了运算符优先级及作用。

以指针方式访问数组几种不同形式输出语句解析

下面用一个实例来分析此问题,在如下代码中:

#include<iostream>
using namespace std;
int main()
{
    int a[]={1,3,5,7,9},*p;
    for(p=a;p<a+5;)
    {cout<<"a["<<p-a<<"]=";
    cout<<*(p++)<<'\t';
    cout<<endl;
    system("pause");
    }
}

上面代码输出为:这里写图片描述
将输出表达式改为: *p++
输出为:这里写图片描述
将输出表达式改为:*(++p)
输出为:这里写图片描述
将输出表达式改为:*++p
输出为:这里写图片描述
将输出表达式改为:(*p)++
输出为:这里写图片描述
将输出表达式改为:++(*p)
输出为:这里写图片描述

从上面结果可以看出,运算符”++“要比”*“的优先级高。
*(p++)和 *p++相当于:先读*p输出,然后执行p++
(++p)和 ++p相当于:先执行p++,再读*p输出
(*p)++相当于:先读取数组第一个元素,然后对此元素进行”++“操作。
++(*p)相当于:先对数组第一个元素进行”++“操作,然后对其进行读取操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值