关于*p++
由于++和*的优先级相同,结合方向是自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使指向p的值加1.
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*p++<<"\t";
}
cout<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*p++<<"\t";
}
cout<<endl;
return 0;
}
等价于
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*p<<"\t";
p++;
}
cout<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*p<<"\t";
p++;
}
cout<<endl;
return 0;
}
*p++等价于*(p++);而*(++p)表示先使p+1,再取*p.
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*(++p)<<"\t";
}
cout<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int a ={1,2,3,4,5,6,7,8,9,10};
cout<<"Please input 10 intergers: "<<endl;
int i=0;
int * p=a;
while(p<a+10){
cout<<*(++p)<<"\t";
}
cout<<endl;
return 0;
}
运行上面的程序,结果将输出a 到a[11]的值,其中a[11]并没有定义。