我在嘗試正確顯示正確的記憶體地址時遇到了麻煩,所以我不知道我在哪個記憶體地址輸入資料。
#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 ;
}
}
這是輸入資料時的輸出:

這是顯示它們時的輸出:

我擔心的是它在輸入資料時沒有輸出正確的記憶體地址。

但是在顯示它們時,顯示正確的記憶體地址似乎沒有問題。

uj5u.com熱心網友回復:
您的輸入回圈p在每次迭代時都按原樣顯示指標(即陣列的基地址)。與您的輸出回圈不同,它不會在每次迭代時調整指標。
您還泄漏了陣列,因為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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439025.html
