如何在C中增加数组的大小

时间:2014-04-29 07:15:43

标签: c arrays pointers

我在结构中有一个数组,如下所示

struct st
{
    ....

    int index[1];

    ....
}

当我想在函数内部使用数组时,如何增加结构中存在的数组的大小,比如6。

3 个答案:

答案 0 :(得分:2)

您可能正在寻找struct hack。 Struct hack是一种允许您为struct内部的数组分配额外内存的技术。这是一个例子

struct str {
    int value;
    char ar[0];
};


int main()
{

   struct str *s = malloc( sizeof(struct str) + 20 );
   strncpy( s->ar,"abcd", 5);
   printf("%s",s->ar);
   return 0;
 }

作为在结构末尾定义的数组,s->ar将在sizeof(struct str)中将{20}个字节添加到malloc

Daan Timmer指出,

编辑,此技术只能应用于结构的最后一个成员。

答案 1 :(得分:1)

你可以试试这个:

struct st { ....

int index[6];

....
}

您也可以在C

中查看功能malloc()realloc()

旁注:

您可以检查STL容器,如std::vector,它封装了相关的内存管理。

答案 2 :(得分:1)

在堆栈上存在以这种方式定义的数组。为了动态更改大小,您需要使用malloc reallocfree在堆上使用allocate。