我正在尝试将int值存储在char数组中,并再次访问它以便稍后检索值。这是我尝试过的,但它不起作用,因为我正在寻找。
char mem[50];
int* size = (int*)&mem[0];
char* isFree = (char*)&mem[4];
char *t = (char *)&mem[4];
现在我想根据订单在char数组中存储1234和'f'。 (在前5个字节内)
我不允许使用其他变量,必须使用char数组。
int a = 1234;
int *size = &a;
以上是不允许的。
答案 0 :(得分:5)
您必须使用类型unsigned char
来复制为您执行此操作的内存或memcpy。将char数组作为int的别名在C中未定义。
存储值:
int value = 1234;
memcpy( mem, &value, sizeof(value) );
检索值:
memcpy( &value, mem, sizeof(value) );
(数组mem
必须足够大才能保存int类型。)
答案 1 :(得分:1)
您可以使用sprintf
-
int size=1234;
char mem[50];
sprintf(mem,"%d",size);
注意 - 这将附加空终结符。
答案 2 :(得分:1)
我尝试了另一种方式,我得到了一个解决方案。我发布它作为其他人的帮助。
char mem[50];
int* size = (int*)&mem[0];
*size = 1234;
char* isFree = (char*)&mem[4];
*isFree = 'f';
char *t = (char *)&mem[4];
printf("%d\n",*(int*)&mem[0]);
printf("%c\n",*(char*)&mem[4]);
我指定了指针指针。我工作。谢谢大家回答。