c++ - 获取指针的地址

标签 c++ pointers

如果我声明以下变量:

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++ << " ";
}

给我不同的输出(一组不同的地址),这个代码:

for ( int i = 0; i < 10; i++ )
{
    std::cout << p++ << " ";
}

为什么?它们在语义上不是等价的吗?

编辑:

好吧,我向所有回答这个问题的人道歉,我没有原始代码,这是我在家里做的一个测试,结果我从我的项目中删除了那个代码。 (我的宽带还没有连接,所以我等到上类才发布这个)。无论如何 - 我很确定我忘记了初始化 p。但问题是“它们在语义上不是等价的吗?”已得到答复。谢谢。

最佳答案

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';

给我相同的地址。您是否不小心忘记了 p = array; 之间的内容?

关于c++ - 获取指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650691/

相关文章:

c++ - 为什么 NULL 指针在 C 和 C++ 中的定义不同?

C++动态分配内存

C++ 没有合适的默认构造函数可用 - 继承的模板化构造函数没有参数

c++ - 具有特殊情况实现的迭代器

c# - 通过 COM 从 C++ 解决方案调试 C# dll

c++ - 指针 - 删除

c++ - 如何在 C++ 中 * char + * char?

将 C 文件指针地址转换为整数

C++ 程序在创建 2000 个对象后崩溃

c - 如何在函数中检查 C 中的类型