将int数组分配给int指针

时间:2018-12-17 16:30:33

标签: c arrays pointers structure

我想将数组的值分配给指针,或者需要更好的方法进行以下操作。

我有一个结构

struct ver{
    int *a;
    int *b
    int *c;
}

struct Versions{
    int ver1[3];
    int ver2[3];
    int ver3[9];
}

static const Versions versionsinfo[] {
    "001234",
    {0,18,0},
    "000000"
};

static Temp_Data;

Versions * GetVersions() {
    Versions * pt = NULL;
    memcpy(&Temp_Data,&versionsinfo[1]);
    pt = &Temp_Data;
    return pt ;
}

struct Versions *pointer;
pointer = GetVersions();    

struct ver *newVer;
newVer->a= pointer->ver1;
newVer->b= pointer->ver2;
newVer->c= pointer->ver3;

我想将Ver1的值分配给struct ver的成员a,b或c。

任何人都可以让我知道C语言是否可行。

2 个答案:

答案 0 :(得分:1)

好吧

int Ver1[3];
int Ver2[9];
int Ver3[9];

它们正在初始化int类型的数组。因此,如果您想获取这些数字(即上述数组的大小),则需要

int Ver1 = 3;
int Ver2 = 9;
int Ver3 = 9;

为指针分配一些内存

struct ver *newVer = malloc(sizeof(newVer));

,然后将值放入

newVer[0].a = Ver1;
newVer[0].b = Ver2;
newVer[0].c = Ver3;

答案 1 :(得分:1)

希望这会有所帮助

struct ver
{
  int *a;
  int *b;
  int *c;
};

int Ver1[3] = {1,2,3};
int Ver2[3] = {1,2,3};;
int Ver3[9];

struct ver *newVer;

int main()
{
   struct ver newV;/*the memory for struct var is allocated in main */

   newVer = (struct ver *)malloc(sizeof(struct ver));/*memory allocated in heap*/

   newV.a = Ver1;/*OR newVar.a = &Ver1[0];*/
   newV.b = Ver2;
   newV.c = Ver3;
   printf("newV->a[0] is %d", newV.a[0]);
  /*OR*/
  newVer->a = Ver1;
  newVer->b = Ver2;
  newVer->c = Ver3;
  printf("\nnewVar->a[1] is %d", newVer->a[1]);
  free(newVer); 

  return 0;
}