【发布时间】:2014-06-19 10:45:53
【问题描述】:
我尝试通过 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);
}
【问题讨论】:
-
为什么
elements和size是全局变量,而vector是局部变量?由于全局elements变量的存在,您不能拥有多个向量,因此您不妨将vector也设为全局变量。 -
您正在将新分配的内存的地址分配给本地指针。原始指针仍然是 NULLPTR。
-
非常好的点@Barmar。
-
@alvits,那我不应该让原始指针为空吗?它按照现在设置的方式运行,更改了 dboals 代码。
标签: c arrays pointers dynamic-memory-allocation