【发布时间】:2016-04-06 14:57:31
【问题描述】:
我已阅读其他帖子,但他们没有完全回答我的问题。 我正在学习从书中的数组中删除元素并尝试应用该代码。 据我所知,我传递数组错误或者它是按地址发送整数(不知道这背后的含义)。
#include <iostream>
#include <cstdlib>
using namespace std;
void delete_element(double x[], int& n, int k);
int main()
{
// example of a function
int mass[10]={1,2,3,45,12,87,100,101,999,999};
int len = 10;
for(int i=0;i<10;i++)
{
cout<<mass[i]<<" ";
};
delete_element(mass[10],10&,4);
for(int i=0;i<10;i++)
cout<<mass[i]<<" ";
return 0;
}
void delete_element(double x[], int& n, int k)
{
if(k<1 || k>n)
{
cout<<"Wrong index of k "<<k<<endl;
exit(1); // end program
}
for(int i = k-1;i<n-1;i++)
x[i]=x[i+1];
n--;
}
【问题讨论】:
-
请注意
int和double不一样。此代码不会编译。此外,对于 C++ 代码来说,这真的不是很典型。 -
delete_element(mass, len, ?);通常你应该发送变量而不是数字
-
你不能从数组中“删除”一个元素,你只能移动它们的值。至于
delete_element(mass[10],10&,4);行:mass[10]访问 10 大小数组中的第 11 个元素,这将导致未定义的行为(充其量是段错误),10&是表达式的一半,不会编译 -
x - 是主数组 n - 数组长度 k- 要删除的元素(实际上删除,因为我从其他帖子中了解到,实际上不可能完全删除元素)
-
@Peter --
k是从零开始的吗?如果是这样,测试是错误的。如果不是,这与 C++ 通常引用数组元素的方式背道而驰。在 C++ 中,我们从 0 开始,而不是 1。
标签: c++