我需要在C套接字上发送一些整数,但我需要先将它们全部放入一个字节数组中。我该怎么做?
我试图这样做:
int a = 10;
int b = 20;
void *arr;
arr+0 = (void *)&a;
arr+4 = (void *)&b;
但是我收到了以下错误:
左值作为赋值的左操作数
答案 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]);