1、*p++,(或者 *(p++)):先解指针,得到数值之后,再将指针p自增;
2、*++p,(或者 *(++p)):指针p先自增,再解指针,得到数值;
3、(*p)++ :先解指针,得到数值,执行完这条语句之后,数值再加一,注意如果是将这个运算输出,那输出值是(*p)的值,执行完之后(*p)的值才增加了1;指针p的指向没有变;
4、++(*p):(*p)的数值自增1;
5、++ *p:先 *p,再将 *p的值增加1;
注意:(*p)++,++(*p)中p最好为int 指针,免得自增或自减出现错误;这两者都不会改变指针p的指向,只会改变p所指向的数据数值,将它们当作普通整数的自增那样看待就行;
#include <iostream>
using namespace std;
int main()
{
char * stra = "string";
cout << "*stra++" << endl;
while(*stra!='\0')
{
cout << *stra++ << endl;
}
cout << endl;
/*
结果为:
*stra++
s
t
r
i
n
g
*/
char * strb ="string";
cout << "*++strb" << endl;
while(*strb!='\0')
{
cout << *++strb << endl;
}
cout << endl;
/*
结果为:
*++strb
t
r
i
n
g
*/
//Õâ¸ö½á¹û¾ÓÈ»ÊǸú*stra++Ò»Ñù£¬Òâ˼ÓÐÎÞÀ¨ºÅ¶¼Ò»Ñù£»
char * strc ="string";
cout << "*(strc++)" << endl;
while(*strc!='\0')
{
cout << *(strc++) << endl;
}
cout << endl;
/*
结果为:
*(strc++)
s
t
r
i
n
g
*/
char * strd ="string";
cout << "*(++strd)" << endl;
while(*strd!='\0')
{
cout << *(++strd) << endl;
}
cout << endl;
/*
结果为:
*(++strd)
t
r
i
n
g
*/
int stre[] ={1,2,3,4,5};
int *stre1 = stre;
cout << "(*stre1)++" << endl;
cout << (*stre1)++ << endl; //结果为 1
cout << *stre1 << endl; //结果为 2
cout << stre[0] << endl;//结果为 2
cout << endl;
int strf[] ={1,2,3,4,5};
int *strf1 = strf;
cout << "++(*strf1)" << endl;
cout << ++(*strf1) << endl;//结果为 2
cout << *strf1 << endl;//结果为 2
cout << strf[0] << endl;//结果为 2
cout << endl;
int strg[] ={1,2,3,4,5};
int *strg1 = strg;
cout << "++*strg1" << endl;
cout << ++*strg1 << endl;//结果为 2
cout << *strg1 << endl;//结果为 2
cout << strg[0] << endl;//结果为 2
cout << endl;
system("pause");
return 0;
}