如何在 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;
}
我一直无法正确显示正确的内存地址,所以我不知道我在哪个内存地址输入数据。
#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;
}