看这篇文档需要的前需知识有:16进制,c++数组,小端法和大端法排列
废话不多说,直接上源码
# include<stdio.h>
typedef unsigned char* bp;// byte_pointer
/* 我想看看数组在内存里是怎么排列的
*/
/* 定义数组nums = [1,2]
* 已知1的16进制是0x00 00 00 01
* 已知2的16进制是0x00 00 00 02
* 小端法显示应该是01 00 00 00和02 00 00 00
* 那么在内存里是先显示1的16进制还是2的16进制
*/
/* 猜想
* 输出为01 00 00 00 02 00 00 00
*/
void sb(bp add, size_t len){
//sb = show_bytes
for(int i = 0; i < len; i++){
printf("%.2x ",add[i]);
}
printf("\n");
}
int main(){
int nums[] = {
1,2};
sb((bp) &nums[0], sizeof(nums)); //猜想正确
return 0;
}