C 中的动态数组(用指针表示) - 输入元素
Dynamic arrays (represented with pointers) in C++ - entering elements?
我有一个家庭作业任务,我应该创建一个数组,并仅用指针实现气泡排序算法。我创建数组,但是如果我想输入3
元素,即如果用户输入n = 3,则程序不允许我输入第三个数字。我想问为什么会发生这种情况?
预先感谢。
#include <iostream>
using namespace std;
int *n = new int ;
int main()
{
cout<<"Vavedete broya na chislata:"<<' ';
cin>>*n;
int *arr = new int[*n];
cout<<"Vavedete elementite:"<<endl;
int *i=new int;
for(*i=0; *i<*n; *i++)
{
cin>>*(arr+*i);
}
return 0;
}
'*'和' '运算符具有相同的优先级,但关联性是正确的。尝试:
#include <iostream>
using namespace std;
int *n = new int ;
int main()
{
cout<<"Vavedete broya na chislata:"<<' ';
cin>>*n;
int *arr = new int[*n];
cout<<"Vavedete elementite:"<<endl;
int *i=new int;
for(*i=0; *i<*n; (*i)++)
{
cin>>*(arr+*i);
}
return 0;
}
在您的循环中,您应该放括号( *i( ,因为当您写 *i 时,请先增加i的地址,然后获得其值
for (*i = 0; *i<*n; (*i)++)
{
cin >> *(arr + *i);
}
postfix增量的优先级高于间接操作员,因此在循环中,您需要编写++*i
,并在第二个迭代中使用当前实现*i
包含垃圾预期的位置。您可以在此处检查优先表。
另外,有一个充分的理由使用前缀增量,因为当您开始使用迭代器时,您将避免创建临时对象。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 输入中的字符串数未知(以字母表示)
- 当我输入 1900 表示年份和 2 表示月份时,我得到 29,而它应该是 28
- 表示带有输入的数组中的元素数?
- 重载运算符>>() 表示未知的输入长度/结构
- 流对象来表示文件输入,然后是标准输入?
- C 中的动态数组(用指针表示) - 输入元素
- 输入迭代器的示例`end()`实际上表示一个past-end-end
- 以对角方式表示用户输入的字符串
- 使用后缀表示法输入C++数字
- 如何获取特殊字符输入并存储在字符或字符串变量中?特殊字符表示©或 ž
- 如何返回以表示C++中的意外输入
- Windows 中的 Control+Z 表示输入 c++ 结束的信号