将int32存储在int8指针中

时间:2019-01-04 01:35:46

标签: c pointers

在下面的代码段中,我定义了foo,它足够容纳32位整数。但是,当我尝试在foo中存储32位整数时,它不合适。

int8_t * foo = malloc(sizeof(int32_t));
int32_t value = 300;
foo[0] = value;
printf("%i ", foo[0]); // 44

是否有某种方法可以用完更多元素来存储值而不是将其截断?

1 个答案:

答案 0 :(得分:4)

foo[0]的类型为int8_t,因此它只能容纳1个字节。

尽管可以使用相邻的字节(foo[1], foo[2], foo[3]),但编译器并不知道您打算仅使用foo[0]复制所有4个字节。

相反:

*((int32_t*)foo) = 300;

其中说,“假设foo是4字节整数的开头,然后将其赋值为300”。