【发布时间】:2014-08-19 11:19:17
【问题描述】:
下面的程序显示 *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 中的数字而不是地址
【问题讨论】:
-
@user3783574 请考虑阅读help center 的格式指南并阅读How to Ask,这将极大地帮助您更快地获得问题的答案。