以指针方式访问数组几种不同形式输出语句解析
下面用一个实例来分析此问题,在如下代码中:
#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)相当于:先对数组第一个元素进行”++“操作,然后对其进行读取操作。