在运行时为动态分配的内存输入值
Entering value to dynamically allocated memory at runtime
以下是我编写的代码,用于在运行时读取值以动态分配的内存:
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 arrayn";
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 行输出之间的区别。
你不必";你可以写cin >> a[0]
。
对于内置类型和指针等,a[b]
是*(a+b)
是*(b+a)
是b[a]
,你可以将它们全部互换。
只有惯例才能导致选择。就像一般情况下,如果你分配了多个int
你会使用"数组符号"(a[i]
(,如果你只分配了一个int
你会使用直接取消引用(*(a+0)
或*a
(。
但是该语言并不真正关心你分配了多少元素,因为无论哪种方式,你只有一个指向"一个或多个"连续元素的指针。
tl;博士 这就是语法的设计方式。
至于你的第二个问题,&p
和*p
给出不同的结果,因为它们意味着不同的东西,我将把辨别这种差异留给读者作为练习。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 在运行时为动态分配的内存输入值
- 如何重复使用原始输入缓冲区内存?
- 动态内存分配和输入(流)运算符C++
- 从常数内存创建输入流
- 用于读取输入文件的内存映射文件的安全
- 动态分配 C 字符串内存,无需先询问用户输入时间
- 如何在大量无损压缩图像中挑选重复的图像对(完全相同)?如何在内存中输入标准::哈希
- 如何在大文件上高效地使用文件输入/输出功能(使用有限大小的内存)
- (C++)循环:不保留内存的用户输入
- Std::out_of_range在内存位置0x0043f7c4.使用矢量和输入文件时出错
- 如何通过用户输入在堆上分配内存
- c++内存/输入问题
- 将内存数据PTR映射到qt输入字段
- 从文件中获取输入并将其保存到临时内存中