我想将数组的值分配给指针,或者需要更好的方法进行以下操作。
我有一个结构
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语言是否可行。
答案 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;
}