【发布时间】:2018-10-04 17:16:55
【问题描述】:
以下是我编写的用于在运行时读取值以动态分配内存的代码:
void main()
{
clrscr();
int *p = new int[5];
int *a = new int();
cin >> *a; // **line 5**
cout << *a << "\n"; // **line 6**
cout << &p; // line 7
cout << *p; // line 8
cout << "\nEnter 5 no for array\n";
for (int i = 0; i <= 4; i++)
{
cout << &p[i] << " :- ";
cin >> p[i]; // LINE 12
}
for (i = 0; i <= 4; i++)
cout << "\n" << p[i]; // LINE 16
delete[] p;
delete a;
getch();
}
我想知道,在为用户输入整数数据时,我们必须使用 *a 和 cin 和 cout 在第 5 行和第 6 行输入数据,但如果是数组,我们只需给出指针第 12 行和第 16 行中的变量名。谁能告诉我为什么我们会有这种差异?
此外,谁能告诉我第 7 行和第 8 行的输出之间的区别。
【问题讨论】:
-
如果有帮助,
p[i]是*(p + i)。 -
您的问题听起来好像您不了解指针的工作原理。指针指向变量或位置,在内存中,& 运算符获取指针的地址,* 取消引用指针以获取存储在指针地址中的值。因此,当您 cin>>*a 时,您正在将某些内容读入 a 的值。当您 cin>>7a 时,您正在阅读 a 的地址。希望这可以帮助您看到差异。>>>>>>>>>>>>>>>>>>>> 所以第 7 行和第 8 行的区别在于您在第 7 行输出地址并输出值存储在第 8 行。
-
每个问题一个问题
标签: c++ arrays pointers dynamic-memory-allocation