如何在 C++ 中的动态分配数组中正确插入和显示数据?

How to properly insert and display data in an dynamically allocated arrays in C++?

我一直无法正确显示正确的内存地址,所以我不知道我在哪个内存地址输入数据。

    #include <iostream>
    
    using namespace std;

    int main() {

       system("cls");

       int *p = new int[2];

       for(int i = 0; i < 2; i++) {
           cout << "Enter value for address " << p << ": ";
           cin >> p[i];
       }

       for(int i = 0; i < 2; i++) {
           cout << *p << " " << p << endl;
           p++;
       }

    }

这是输入数据时的输出:

这是显示它们时的输出:

我担心的是它在输入数据时没有输出正确的内存地址。

但是在显示的时候好像显示正确的内存地址没有问题。

您的输入循环在每次迭代中显示 p 指针 as-is(即数组的基地址)。它不会在每次迭代时调整指针,这与您的输出循环不同。

你也泄露了数组,因为当你用完它时你并没有delete[]'它。

试试这个:

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {

    system("cls");

    int *p = new int[2];

    for(int i = 0; i < 2; i++) {
        cout << "Enter value for address " << &p[i] << ": ";
        cin >> p[i];
    }

    for(int i = 0; i < 2; i++) {
        cout << p[i] << " " << &p[i] << endl;
    }

    delete[] p;
    return 0;
}

或者:

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {

    system("cls");

    int *p = new int[2];

    int *elem = p;
    for(int i = 0; i < 2; i++) {
        cout << "Enter value for address " << elem << ": ";
        cin >> *elem;
        ++elem;
    }

    elem = p;
    for(int i = 0; i < 2; i++) {
        cout << *elem << " " << elem << endl;
        ++elem;
    }

    delete[] p;
    return 0;
}