我想在同一个分配的内存中存储不同的数据类型,以便通过仅分配一次内存来减少执行时间.我发现实际上可以创建一个uint8_t变量数组并创建一个uint16_t指向同一内存地址的新指针,然后我可以双向读取这些值.
这允许我创建一个指针,让我们说分配内存的中间,并将值存储在后半部分的不同数据类型中.
可以这样做吗?我知道我需要关注内存边界,但这是不好的风格?
这是我的代码:
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>
int main(void){
uint8_t *array;
uint16_t *array2;
array = calloc(6, 1);
array[0] = 257;
printf("array[0]= %" PRIu8 "\n", array[0]);
printf("array[1]= %" PRIu8 "\n", array[1]);
printf("Adresse von array[0] = %p\n", &array[0]);
array2 = &array[0];
printf("Adresse auf die array2 zeigt = %p\n", array2);
array2[0] = 257;
printf("array2[0]= %" PRIu16 "\n", array2[0]);
printf("array2[1]= %" PRIu16 "\n", array2[1]);
printf("array[0]= %" PRIu8 "\n", array[0]);
printf("array[1]= %" PRIu8 "\n", array[1]);
getchar(); …Run Code Online (Sandbox Code Playgroud)