赞
踩
int a[]={5,6,7,8,9},*p;
p=a;
cout << "(*p)++=" << (*p)++ << endl;
cout << "数组第一个元素值"<<a[0]<<endl;
cout << "++(*p)=" << ++(*p) << endl;
cout << "数组第一个元素值"<<a[0]<<endl;
*等价于(2)++(p)
注:前三个中:p的指针都没有移动,都是指向数组第一个元素;
*因为(1)(2)中是因为(p)有括号优先级更大;所以没有移动;
(3)是因为 与++运算符 分离,就近先执行p;
cout << "*p++=" << *p++ << endl;
cout << *p << endl;————p指向了第二个元素
与(4)结果一致,可以按(4)理解
cout << "*(++p)=" << *(++p) << endl;
cout << *p << endl;
等价于(6)
(1)如果是有括号如-++(*p)或(*p)++;
即先*p——即先取地址中的值,然后再++p(左加加)或者p++(右加加)则会改变数组中元素的值;
(2)如果是没有括号如-++*p;
但是为左加加;则此类同上,也会改变数组中元素的值;
(3)如果没有括号如-== p++,==
则是右加加;则此时为先取p,再移动指针;此类并不会改变元素的值;
此类经常用来遍历数组;
此类*(p++)用法一致——不介意使用;
(4)*++p与 *(++p)都是先移动指针,再取值,所以对数组中的值都不会造成影响;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。