C编程:将struct作为参数传递 - 函数

时间:2016-11-22 22:20:07

标签: c struct structure

我正在尝试向GI阵列添加新的ITEM,但这似乎不起作用。 我在这里打砖墙。有人可以提出建议吗? 我尝试传递additem(GI,& Recs,222),如下所示并更新值:

#include <stdio.h>


   struct Item {
   double value;
   int unitno;
   int isTa;
   int quant;
   int minQuan;
   char name[31];
};

struct Item GI[21] = {
   { 41.4,1275,01,110,12,"Apples" },
   { 52.99,3826,02,220,24,"Melon" },
};
int Recs=20;
void additem(struct Item item[], int *Recs, int unit);
void addtest();


int main ()
{
addtest();
return 0;
}

void addtest() {
additem(GI, &Recs, 222); 
}

void additem(struct Item item[], int *Recs, int value)
{
printf("--== Adding values! ==--\n");
        GI[21].value=44.44;
        GI[21].quant=44;
        GI[21].minQuan=4;
        strcpy(Recs->name, "vGrape");
return 0;
}

2 个答案:

答案 0 :(得分:0)

不,它不起作用。您无法在c中动态地将项添加到数组中。您需要动态内存分配,即malloc()和系列。

这不是一件小事,您可以使用malloc()的姐姐realloc()来增加以前分配的内存部分的大小,但是您应该注意不要这样做经常因为内存分配在计算时间方面很昂贵。

答案 1 :(得分:0)

大小为21的数组只能使用0到20的索引。