如何将多个整数值放入C中的void数组?

时间:2015-07-14 17:31:12

标签: c arrays

我需要在C套接字上发送一些整数,但我需要先将它们全部放入一个字节数组中。我该怎么做?

我试图这样做:

int a = 10;
int b = 20;

void *arr;

arr+0 = (void *)&a;
arr+4 = (void *)&b;

但是我收到了以下错误:

  

左值作为赋值的左操作数

2 个答案:

答案 0 :(得分:2)

您似乎不知道C中的指针算术和内存分配。首先,您需要为arr分配内存

int **arr = malloc(sizeof(int*)*2)  

然后

arr[0] = &a;
arr[1] = &b;

答案 1 :(得分:0)

首先,如果你需要一个字节数组,那么你应该这样定义它:

byte arr[8];

如果您需要动态分配内存,请使用@haccks建议的malloc()

为了将整数分配给字节数组的一小部分,必须将该分数的地址乘以&arr[n],然后将结果转换为整数指针。如果取消引用该点,则可以指定值:

*(int*)&arr[0] = a;
*(int*)&arr[4] = b;

要再次从数组中检索整数值,您必须基本上这样做:

printf("a: %d\n", *(int*)&arr[0]);
printf("b: %d\n", *(int*)&arr[4]);

如果要查看字节级别的整数值会发生什么,请查看以下输出:

printf("a0: %d\n", arr[0]);
printf("a1: %d\n", arr[1]);
printf("a2: %d\n", arr[2]);
printf("a3: %d\n", arr[3]);