gpt4 book ai didi

c - 调整数组大小 (c)

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:20 25 4
gpt4 key购买 nike

我正在尝试调整数组的大小以包含长度为“newlen”的值。如果 newlen 小于原始数组长度,则丢弃数组的末尾。如果 newlen 更大,则新整数应为零。我想出了这个功能,但是当我测试它时,我遇到了段错误。我也不知道如何将零添加到末尾,如何跟踪索引以便在末尾添加 int 零?我做了第一种情况(newlen 小于 len),但不知道如何做另一种情况。

数组结构如下:

typedef struct {
int* data;
unsigned int len;
} intarr_t;

我的功能:

array_size( intarr_t* p, unsigned int newlength )

{

int i,m = 0;

if (newlength < len)
int *tmp;
tmp = realloc(p->data, (p->newlen)* sizeof *p->data);
if(tmp)

{
for (i; newlength < p->len; i++)
{ for (m; newlength < p->len; m++)

{
p->data[i] = p->data[m];
}
}

}

}

最佳答案

提供给 realloc() 的指针(p->data)没有改变。

realloc() 的用法通常需要像这样

tmp = realloc(old_pointer, new_number * sizeof(*tmp));
if (tmp == NULL)
{
/* an error occur and old_pointer remains unchanged */
/* need to recover */
}
else
{
old_pointer = tmp;
length = new_number;
}

我假设 tmpold_pointer 是上面的相同类型。

然后您可以初始化 old_pointer 的附加元素(假设数组大小正在增加)。

关于c - 调整数组大小 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441186/

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