gpt4 book ai didi

C:向动态分配的数组添加元素

转载 作者:行者123 更新时间:2023-12-02 08:34:11 25 4
gpt4 key购买 nike

我试图通过 Google 搜索解决方案:我找不到任何有用的东西;甚至看起来我做对了。我能找到的关于通过函数发送我动态分配的数组的唯一页面处理数组在结构内,这当然是标量,所以表现不同。我现在不想使用结构 - 我正在尝试了解 DAM 并使用指针和函数。

也就是说,我确信它非常基础,但我被卡住了。代码编译,但当我运行可执行文件时它卡住了。 (我正在使用 minGW gcc,如果这很重要的话。我现在完全不清楚如何使用 gdb。)

这是代码(最终,我希望整个代码是一个类似 ArrayList 的数据结构):

#include <stdio.h>
#include <stdlib.h>

void add( int element, int *vector);
void display_vector( int *vector );
void initialize_vector( int *vector );

int elements = 0;
int size = 10;

int main(void)
{
int *vector = 0;
initialize_vector(vector);
add(1, vector);
//add(2, vector);
//add(3, vector);
//add(4, vector);
//add(5, vector);
//add(6, vector);
//add(7, vector);
//add(8, vector);
//add(9, vector);
//add(10, vector);
//add(11, vector);
display_vector(vector);

return 0;
}

void add( int element, int *vector)
{
vector[elements++] = element;
return;
}

void display_vector( int *vector )
{
int i;
for( i = 0; i < elements; i++)
{
printf("%2d\t", vector[i]);
if( (i + 1) % 5 == 0 )
printf("\n");
}
printf("\n");
return;
}

void initialize_vector( int *vector )
{
vector = (int *)malloc(sizeof(int) * size);

}

最佳答案

经过编辑使更清楚一点。

问题是您的 init 例程正在使用“vector”的副本,并且正在 malloc'ing 到该副本而不是原始 vector 指针。您在初始化返回时丢失了指向内存块的指针。

在此函数中将 vector 的参数更改为句柄(指向指针的指针)

void initialize_vector( int **vector )
{
*vector = (int *)malloc(sizeof(int) * size);
}

然后把对init的调用改成这样

initialize_vector(&vector);

我没有编译它,但它应该修复代码。

关于C:向动态分配的数组添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433401/

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