gpt4 book ai didi

c++ - 作业 : Making an array using pointers

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:16 25 4
gpt4 key购买 nike

我正在解决作业问题。我和其他一些学生非常确定我们的老师说错了,但也许不是。我已经检查了这里的一些问题,但无法真正找到使用指针创建本质上是数组的方法。说明如下。

  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;
}

它一直在 salary number 13 左右标记段错误

我的主要目的(因为我几乎可以肯定我的老师写错了)是了解更多关于指针的知识,因此非常感谢学习这些令人困惑的东西的任何和所有提示和技巧。谢谢你们!

最佳答案

使用

int* salary_pointer = new int[20];

相反,因为您分配了 20 个 int,而不仅仅是一个。然后,使用

删除动态数组
delete[] salary_pointer;

而不是 删除 salary_pointer。这里也要小心:

salary[i] / (i + 1);

如果操作数是 int,那么您将以截断结束。使用 salary[i]/(i + 1.) 如果你希望你的结果是 double (在这种情况下你最好制作 salary double 的数组或指向 double 的指针,这样您就不会再遇到这个问题了)。

关于c++ - 作业 : Making an array using pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com