我是一个初学者,所以请让我在这个方面有所放松。所以我目前正在使用的头文件中有两个函数和一个结构。
这是结构:
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 函数本身的情况下执行此操作。抱歉,如果这是一个措辞不当的问题,但我可以进一步澄清它是否令人困惑。提前致谢!