改变指针(增加,减少)?

时间:2014-08-19 11:19:17

标签: c++ pointers reference

下面的程序显示* q = 46但q指向未定义的地址,因为它指向:p-1因此它不指向p或m而是指向另一个地址(因为-1) 那怎么可能是* q = 46 我认为它必须有一个基于我学到的垃圾数量 我希望你得到我想说的话,因为我不是母语

int m = 44;
int* p = &m;
int& r = m;
int n = (*p++);
int* q = p – 1;
r = *(--p) + 1;
++*q;

一旦程序运行,练习就需要每个变量的数量以及指针和引用 我用程序测试了它

输出:

p=0022fa00
*p=46
&p=0022f9f4
&n=0022f9dc
n=44
m=46
q=0022fa00  <<<<<<<
r=46
*q=46  <<<<<<<
&m=0022fa00

我想也许是因为int n =(* p ++)但我认为不应该是因为该语句必须增加p中的数字而不是地址

2 个答案:

答案 0 :(得分:1)

int m = 44;//m=44
int* p = &m;//p has address of m *p=44
int& r = m;// r is allias(nickname) of m (*p m r is same)=44
int n = (*p++);//n=44 *p=garbage m=44 r=44 p is m's address+1
// *p++ means give *p then increase p(not *p)
int* q = p - 1;//q shows m's address *q=44
r = *(--p) + 1;//*(--p) means m r= m+1=45 r=45 m=45 because r is allias of m *q=45
++*q;//increase r=46 m=46 (*q)=46

这就是那里发生的事情。我希望这会有所帮助。

答案 1 :(得分:0)

  

我想也许是因为int n =(* p ++)但我认为不应该是因为该语句必须增加p中的数字而不是地址

不。 *p++*(p++),而不是(*p)++