当前位置: 首页 > 知识库问答 >
问题:

使用数组指针进行Cout打印-奇怪的行为

薛欣德
2023-03-14

我在玩指针,得到了我没有想到的结果:

#include <iostream>
#include <vector>

int main() {
    int arr[4] = { 1, 2, 3, 4 };
    int* pArr = arr;
    std::cout << "First number: " << *pArr << " at address: " << pArr;
    pArr++;
    std::cout << "\nSecond number: " << *pArr << " at address: " << pArr;
    pArr++;
    std::cout << "\nThird number: " << *pArr << " at address: " << pArr;
    pArr++;
    std::cout << "\nFourth number: " << *pArr << " at address: " << pArr;
    
    int* pArr2 = arr;
    std::cout << "\n"
        << *pArr2++ << "\n"
        << *pArr2++ << "\n"
        << *pArr2++ << "\n"
        << *pArr2++ << "\n";
    /*
    int* pArr2 = arr;
    std::cout << "\n"
        << ++ * pArr2 << "\n"
        <<  * ++pArr2 << "\n";
    */
}

两种不同的结果:

1 2 3 4-按预期使用第一种方法

共有1个答案

范建华
2023-03-14

此代码:

std::cout << "\n" << *pArr2++ << "\n";
std::cout << "\n" << *pArr2++ << "\n";

具有定义良好的parr修改顺序,并将打印

1
2

但是这个代码:

std::cout << "\n" << *pArr2++ << "\n" << *pArr2++ << "\n";
1
2
 类似资料:
  • 显示时,打印功能似乎可以减少点数: 航站楼里不会发生这样的事情: 即使我在其中运行IPython: 有人知道这种行为的原因吗?

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 今天我遇到了一个我无法解释的情况,我希望你能解释。 归结起来就是: 比如说

  • 问题内容: 这个问题已经在这里有了答案 : 为什么对泛型的这种使用不会引发运行时或编译时异常? (3个答案) 2年前关闭。 我正在使用Java 8。 我最近遇到了这个问题: 这不会引发java.lang.ClassCastException。这是为什么? 我一直在想和打电话。但是,当我尝试这样做时,它会按预期抛出异常。 问题答案: 它不会抛出,因为所有通用类型信息都已从编译后的代码中剥离(此过程称

  • 这个程序打印00,但是如果我注释掉a.store和b.store,而取消注释a.fetch_add和b.fetch_add,这做了完全相同的事情,即都设置了a=1,b=1的值,我永远不会得到00。 是我错过了什么,还是“00”按标准永远不会出现? 下面打印00。 下图从不打印00 再看看这个,多线程原子a b打印00 for memory_order_refield

  • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么