#include <iostream.h>
void prt(int *z)
{
cout<<*(z++)<<endl; //若果是cout<<*z 为20我可以理解, 但是……
}int c=20;
void main()
{
prt(&c);
}
void prt(int *z)
{
cout<<*(z++)<<endl; //若果是cout<<*z 为20我可以理解, 但是……
}int c=20;
void main()
{
prt(&c);
}
x =z ++;
x的值为3.
x = ++z ;
x的值为4.
z++;
z的值为4
++z
z的值为5
去掉括号试试;
再用*(++z)试试;
void prt(int *z)
{
cout<<*(z++)<<endl; //若果为20我可以理解
cout<<*(z++)<<endl; //若果为21我也可以理解
}int c=20;
void main()
{
prt(&c);
}
先输出*z ,z再++
加的是指针地址还是指针指向的数据呢
应该是地址加吧。 (*z) ++
和
*(z++)
不同吧。没有测试,但是我认为他们是不同的。
// *(z++)语句,(z++)先取出z值,再z=z+1;
// 因为z++的——表达式——的值是没有自加前的z;
//所以 这里(z++)=z++ 表达式的结果值相等
*(z++);语句可扩展如下
p=z++;
*p;
{
cout<<*(z++)<<endl; //若果是cout<<*z 为20我可以理解, 但是……}
为什么会是20呢
因为z++是把指针改变了, 但是返回的是改变之间的指针
如果在 cout<<*(z++) << endl;
之后再加入一句
cout << * z << endl;
你就知道是什么后果了。
void prt(int *z)
{
cout<<*(z++)<<endl; //此时z = &c并没有+1输出
cout<<*(z++)<<endl; //此时z = &c + 1是一个不确定的值....!!!!
}
cout<<*(++z)<<endl; //???指针已经跑到女儿国了
*(z++)<=>*z++ <=> 输出*z:10;z++
*(++z)<=>输出z的后面地址中的变量,z++