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)
uint32的大小是32位,或4个字节.当你这样做时(char*)array+8,你将数组转换为char数组,并取第八个字符.这里,第八个字符包含整数的开头23,它适合char.
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |