快速打印结构体 告诉你什么叫+1

printf("%02X#",*(uint8_t *)&list+i);

48#49#4A#4B#4C#4D#4E#4F#50#51#52#53#54#55#56#57

 

显然错误!!

 printf("%02X#",*((uint8_t *)&list+i) );

48#F2#00#20#49#E9#00#08#01#00#00#00#30#12#00#20#

基本对头!!

 

打印U64一定要%llX 记住!

 

 

#include<stdio.h>
#include <string.h>
typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int   uint32_t;


struct 

{
unsigned char weight;
unsigned char hight;
}test;
int main(void)
{
unsigned char i = 0;
test.weight=5;
test.hight=8;
unsigned char arr[4]={0x01,0X02,0X03,0X04} ;
for(i=0;i<4;i++)
	printf("%d-",*(arr+i) ) ;//*(arr+i)//*arr+i//(*arr)+i//*( (unsigned char*)arr+i) )//*( (unsigned char*)arr)+i)

for(i=0;i<2;i++)
	printf("%d-",*(  (unsigned char*)&test+i       ) );//i 是int也可以 因为i=0 1 2 死了

}
//1-2-3-4-5-8-[Finished in 1.2s]  

 

 

 

for(i=0;i<4;i++)
    printf("%d-",arr+i )

6422315-6422316-6422317-6422318-5-8-[Finished in 1.3s]

 

for(i=0;i<4;i++)
    printf("%d-",&arr+i )

6422315-6422319-6422323-6422327-5-8-[Finished in 1.3s]

此时修改为:

unsigned char arr[5]={0x01,0X02,0X03,0X04} ;
for(i=0;i<4;i++)
    printf("%d-",&arr+i ) ;

表现为:6422314-6422319-6422324-6422329-5-8-[Finished in 1.2s]

现在明白了吧

 

 

 

 

 

 

 

#include<stdio.h>
#include <string.h>
typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int   uint32_t;



typedef struct
{
	uint8_t ip[50];
	uint16_t port;
}serverAddrType;
#if 0
serverAddrType addr;

int main(void)
{
unsigned char i = 0;
memcpy(addr.ip,"192.168.1.0",11);
addr.port=1883;

for(i=0;i<52;i++)
	printf("%c-",*(  (unsigned char*)&addr+i       ) );//i 是int也可以 因为i=0 1 2 死了

}

#else
serverAddrType addrins;
serverAddrType *addr=&addrins;

int main(void)
{
unsigned char i = 0;
memcpy(addr->ip,"192.168.1.0",11);
addr->port=1883;

for(i=0;i<52;i++)
	printf("%c-",*(  (unsigned char*)addr+i       ) );//i 是int也可以 因为i=0 1 2 死了

}
#endif

结论:
*(  (unsigned char*)addr+i        ) 
*(  (unsigned char*)&addr+i       ) 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值