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编码就是对各种类型数组的操作。

相关推荐
特立独行的猫a1 天前
C++开发中的构建工具:现代CMake实战速成
开发语言·c++·cmake·入门教程
进阶的猪1 天前
stm32 GPIO输出-使用固件库点亮LED灯 Q&A
c语言·笔记·stm32·单片机
点云侠1 天前
粒子群优化算法求解三维变换矩阵的数学推导
线性代数·算法·矩阵
dragoooon341 天前
[hot100 NO.31~36]
数据结构·算法·排序算法
白兰地空瓶1 天前
JavaScript 列表转树(List to Tree)详解:前端面试中如何从递归 O(n²) 优化到一次遍历 O(n)
javascript·算法·面试
思成不止于此1 天前
C++ STL中map与set的底层实现原理深度解析
开发语言·c++·set·map·红黑树·底层实现
艾醒1 天前
大模型原理剖析——从技术特性、底层架构到落地逻辑的全维度解析
算法
惺忪97981 天前
C++ 构造函数完全指南
开发语言·c++
小此方1 天前
Re:从零开始学C++(五)类和对象·第二篇:构造函数与析构函数
开发语言·c++
秦苒&1 天前
【C语言】详解数据类型和变量(二):三种操作符(算数、赋值、单目)及printf
c语言·开发语言·c++·c#