C - int数组到char*的转换

Mar*_*arc 3 c arrays pointers type-conversion

我有一个问题,要将int数组转换为char*.以下代码具有输出23.但我真的不明白为什么.有人可以向我解释一下吗?

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

int main(){
    uint32_t x;
    uint32_t* p = (uint32_t*) malloc(sizeof(uint32_t));    
    uint32_t array[9] = {42, 5, 23, 82, 127, 21, 324, 3, 8};

    *p = *((char*)array+8);
    printf("1: %d\n", *p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Hug*_*l31 6

uint32的大小是32位,或4个字节.当你这样做时(char*)array+8,你将数组转换为char数组,并取第八个字符.这里,第八个字符包含整数的开头23,它适合char.