C - int 数组到 char* 的转换

标签 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;
}

最佳答案

uint32 的大小是 32 位,或 4 个字节。当您执行 (char*)array+8 时,您将数组转换为 char 数组,并取第八个字符。此处,第八个字符包含整数 23 的开头,适合一个字符。

关于C - int 数组到 char* 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955669/

相关文章:

c - 如何在 C 函数中查找字符串的大小?

javascript - 函数式 JavaScript : Produce array of unique values

c - 指向结构数组中第一个结构的指针?

c++ - C++ 结构体中的指针

c - 查找数组中的重复项

c - malloc() 何时设置 EAGAIN 错误?

带有数组的 C++ 构造函数初始化列表

Javascript li 使用 for 循环从数组中列表

c++ - `(T *)0 - (T *)0` 是否明确定义为 0?

c - Mac 上 Xcode 创建的文件存储在哪里?