c 不同类型指针的转换

int 指针与unsigned char类型指针互转

复制代码
#include <stdio.h>
#include <stdlib.h>


int main(void){
    int a=(0x1<<24)|(0x2<<16)|(0x3<<8)|0x4; //0x1020304
	printf("16进制:%x\n",a);
	
	u_int8_t *p=(u_int8_t *)&a;    //int指针转为unsigned char指针
	
	for(int a=0;a<4;a++){
    	printf("%x\n",*(p+a));      //4,3,2,1
	}
	
	
	u_int8_t u[4]={4,3,2,1};
	int *p1=(int *)u;
	printf("%x\n",*p1);     //   1020304
	
	return 0;
}

从输出可以看出:int的低字节存储在内存的低地址,这是小端存储

从这个例子可以看出:在内存中具有相同开始地址的数据都可以互相转换。

可以这样理解:c中的数据是从某一个起始地址开始的连续的一定长度的char数组。所以说,c编码就是对各种类型数组的操作。

相关推荐
海绵宝宝转agent10 分钟前
leetCode100算法开源笔记分享
笔记·算法
jimy113 分钟前
基类没有虚析构函数,基类指针删除派生类对象,行为是未定义的
开发语言·c++
写后端的胖头鱼33 分钟前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度
hahaha601635 分钟前
黑体轨迹和色温--光源白点
人工智能·嵌入式硬件·算法·计算机视觉
海绵宝宝转agent37 分钟前
基于Redis ZSet+AOP+注解实现限流注解算法
数据库·redis·算法
xlq2232244 分钟前
全面复习2
c++
无名猿1 小时前
移动构造与移动赋值:把资源偷过来
c++·性能优化·内存管理·现代c++·语法基础
老花眼猫1 小时前
数学艺术图案画-曼陀罗(93)
c语言·经验分享·青少年编程·课程设计
水饺编程2 小时前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
All for pursuit.2 小时前
【回溯-7】494.目标和
数据结构·c++·算法·leetcode