void create(azienda *a, int i, int n)
{
//azienda it's a struct
azienda *ag;
ag=new azienda [n];
for(int h=0;h<n;h++)
{
ag[h]=a[h];
}
delete []a;
a=new azienda[n+1];
for(int g=0;g<n;g++)
{
a[g]=ag[g];
}
delete []ag;
int j;
j=i;
for(j=n+1;j>=i;j--)
{
a[j]=a[j-1];
}
return;
}
我尝试创建一个为动态分配的结构创建空间的函数。尽管编译器没有给我任何错误,但它不起作用!你能解释一下为什么吗?
答案 0 :(得分:1)
我认为主要的问题是你用作函数的第一个参数
的参数的指针void create(azienda *a, int i, int n);
在功能内部没有任何改变。 azienda * a是函数的局部变量,退出函数后将被销毁。你有三种方法。第一个是从函数
返回新指针azienda * create(azienda *a, int i, int n);
并将其分配给外部指针。
另外两个人使用间接。例如
void create(azienda **a, int i, int n);
或
void create(azienda * &a, int i, int n);
请注意此代码段无效
a=new azienda[n+1];
for(int g=0;g<n;g++)
{
a[g]=ag[g];
}
delete []ag;
int j;
j=i;
for(j=n+1;j>=i;j--)
{
a[j]=a[j-1];
没有[n + 1]这样的元素,因为有效的指标将是[0,n + 1]