1

我是一个初学者,所以请让我在这个方面有所放松。所以我目前正在使用的头文件中有两个函数和一个结构。

这是结构:

typedef struct ArrayList
{
    // We will store an array of strings (i.e., an array of char arrays)
    char **array;

    // Size of list (i.e., number of elements that have been added to the array)
    int size;

    // Length of the array (i.e., the array's current maximum capacity)
    int capacity;

} ArrayList;

这是第一个函数,它为字符串数组创建并动态分配内存。容量是内部数组的长度,大小是当前大小(数组中有多少个字符串,本质上是 0。)

ArrayList *createArrayList(int length){

char **array = NULL;
ArrayList *n;
int size = 0;


if (length > DEFAULT_INIT_LEN)
{

array = malloc(sizeof(int) * length);
n->capacity = length;
}
else
{
array = malloc(sizeof(int) * DEFAULT_INIT_LEN);
n->capacity = DEFAULT_INIT_LEN;
}

if (array == NULL)
    panic("ERROR: out of memory in Mylist!\n");

n->size = size;

printf("-> Created new ArrayList of size %d\n", n->capacity);


return *array;

当我尝试在同一文件中的另一个函数内实现指向 ArrayList 结构的容量成员的指针时,它未初始化,而不是设置为前一个函数的值。即在createArrayList中,n->capacity等于10,但是在printArrayList中使用时是未初始化的,出现一个随机数如122843753:

void printArrayList(ArrayList *list)
{


printf("\n%d", list->capacity);


return NULL;
}

我的问题是,我怎样才能使所有这些函数在引用结构成员时“共享”相同的值。IE 第一个函数打印 -> 创建大小为 10 的新 ArrayList,第二个函数也打印 10。此外,我必须在不更改 struct 函数本身的情况下执行此操作。抱歉,如果这是一个措辞不当的问题,但我可以进一步澄清它是否令人困惑。提前致谢!

4

1 回答 1

2

我看到这段代码有几个主要问题,createArrayList你正在返回arraywhich is achar **但你应该返回一个ArrayList *which is what nis。所以看起来你想分配arrayn->array. 下一个问题是,nArrayList *您没有为n.

于 2013-05-27T01:30:52.393 回答