如何在多个函数中为结构体的成员设置一个特定的值



我是初学者,所以请在这个问题上放我一马。因此,我在头文件中有两个函数和一个结构体,我目前正在使用。

结构体:

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;

这是第一个函数,它为字符串数组创建并动态分配内存。Capacity是内部数组的长度,size是当前大小(数组中有多少个字符串,本质上是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 %dn", n->capacity);

return *array;

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

void printArrayList(ArrayList *list)
{

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

return NULL;
}

我的问题是,我如何才能使所有这些函数在引用结构成员时"共享"相同的值。也就是说,第一个函数打印->创建了一个大小为10的新数组列表,第二个函数也打印10。而且,我必须在不改变struct函数本身的情况下这样做。抱歉,如果这是一个措辞不好的问题,但我可以进一步澄清,如果它令人困惑。提前感谢!

我看到这段代码的几个主要问题,在createArrayList中,您将返回array,这是char **,但您应该返回ArrayList *,这是n。因此,看起来您想将array分配给n->array。下一个问题是nArrayList *,但您不为n分配内存。

相关内容

  • 没有找到相关文章

最新更新