当前位置:  开发笔记 > 编程语言 > 正文

家庭作业:使用指针制作数组

如何解决《家庭作业:使用指针制作数组》经验,为你挑选了1个好方法。

我有一个功课问题,我正在努力.我和其他一些学生都很确定我们的老师是错误的,但也许不是.我已经在这里检查了一些问题,并且无法真正找到一种方法来使用指针来创建本质上是一个数组.说明如下.

    重写以下程序以使用指针而不是数组:

代码是这样的

int main()
{
    int salary[20];
    int i;
    for (i = 0; i < 20; i++)
    {
        cout << "Enter Salary: ";
        cin >> salary[i];
    }
    for (i = 0; i < 20; ++i)
        salary[i] = salary[i] + salary[i] / (i + 1);

    return 0;
}

我的解决方案是:

int main()
{
    int* salary_pointer = new int;
    for (int i = 0; i < 20; i++)
    {
        cout << "Enter Salary: ";
        cin >> *(salary_pointer + i);
    }
    for (int i = 0; i < 20; ++i)
    {
        *(salary_pointer + i) = *(salary_pointer + i) + *(salary_pointer + i) / (i + 1);
        cout << *(salary_pointer + i) << endl;
    }
    delete salary_pointer;
    return 0;
}

它不断标记13号工资的分段错误

我的主要目的(因为我几乎是积极的,我的老师写错了)是要更多地了解指针,所以学习这些令人困惑的东西的任何和所有提示和技巧将不胜感激.谢谢你们!



1> vsoftco..:

使用

int* salary_pointer = new int[20];

相反,当你分配20 int秒时,不只是一个.然后,使用删除动态数组

delete[] salary_pointer;

而不是delete salary_pointer.这里要小心:

salary[i] / (i + 1);

如果操作数是int,那么你最终会截断.使用salary[i]/(i + 1.)的情况下,你希望你的结果作为一个double(在这种情况下,你最好使salary的数组doubleS或指针double,这样你就没有这个问题了).

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有