69,371
社区成员
发帖
与我相关
我的任务
分享
有些地方说明一下
>>如果非要用字节对齐,我给你看个代码
改成“如果非要用结构体内偏移,我给你看个代码”
另外
i<2
*(int *)((char *)p+i*sizeof(int)) = 1;
对应到你的程序
2<a[0]
*(int *)((char *)p+i*sizeof(int)) = a[i+1];
最后记得delete p
over 睡觉
#include <stdlib.h>
#include <stdio.h>
typedef struct
{
int a;
int b;
}A;
int main()
{
A *p = (A *)malloc(sizeof(A));
int i =0;
for(i=0;i<2; i++)
*(int *)((char *)p+i*sizeof(int)) = 1;
printf("%d%d", p->a, p->b);
return 0;
}
p->a = a[1];
p->b = a[2];
p->c = a[3];
p->d = a[4];
p->e = a[5];
#define N 3
moto_set *p = (moto_set *)malloc(sizeof(moto_set)*N);
moto_set a[N+1] = {...}; //a[0]中存放长度,其他存放赋值的结构体,len返回长度
for(i=0; i <len(a[0]); i++) //a[0]存的是数组的长度
{
p[i] = a[i+1];
}
for(i=0;i <len(a[0]); i++) //a[0]存的是数组的长度
{
p[i] = a[i+1];
}