如果我声明以下变量:
int array[10] = { 34, 43,12, 67, 34, 43,26, 98, 423,1 };
int * p = array;
Run Code Online (Sandbox Code Playgroud)
然后,这个循环:
for ( int i = 0; i < 10; i++ )
{
std::cout << &*p++ << " ";
}
Run Code Online (Sandbox Code Playgroud)
给我这个代码的不同输出(一组不同的地址):
for ( int i = 0; i < 10; i++ )
{
std::cout << p++ << " ";
}
Run Code Online (Sandbox Code Playgroud)
为什么?它们在语义上是不相同的吗?
编辑:
好吧,我向所有回答此问题的人道歉,我没有原始代码,这是我在家里做的测试,事实证明我从我的项目中删除了该代码.(我的宽带还没有连接,所以我一直等到工作发布这个).无论如何 - 我很确定我忘了初始化p
.但问题是"它们在语义上是否相同?" 已经回答了.谢谢.
ust*_*sta 13
int array[10] = { 34, 43,12, 67, 34, 43,26, 98, 423,1 };
int * p = array;
for ( int i = 0; i < 10; i++ )
{
std::cout << p++ << " ";
}
p = array;
std::cout << '\n';
for ( int i = 0; i < 10; i++ )
{
std::cout << &*p++ << " ";
}
std::cout << '\n';
Run Code Online (Sandbox Code Playgroud)
给我相同的地址.你不小心忘记p = array;
了吗?
归档时间: |
|
查看次数: |
324 次 |
最近记录: |