C 中的动态数组(用指针表示) - 输入元素

Dynamic arrays (represented with pointers) in C++ - entering elements?

本文关键字:表示 输入 元素 指针 动态 数组      更新时间:2023-10-16

我有一个家庭作业任务,我应该创建一个数组,并仅用指针实现气泡排序算法。我创建数组,但是如果我想输入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包含垃圾预期的位置。您可以在此处检查优先表。

另外,有一个充分的理由使用前缀增量,因为当您开始使用迭代器时,您将避免创建临时对象。