我对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/