c语言 数据类型

c语言 memcpy

c语言memset,memcpy中,后面数据长度的单位是Byte

int a;  // c语言中int占32bite=4字节
int b;
memcpy(a, b, 4);  // 把b的值赋给a

char a;  // c语言中char占8bit=1字节
char b;
memcpy(a, b, 1);

c语言中的数据类型

1.整型

有符号: int --4Byte; short --2Byte; long --4Byte; long long -8Byte;

无符号:unsigned int --4Byte; unsigned short --2Byte; unsigned long --4Byte; unsigned long long --8Byte;

2.字符型

char --1Byte;

3.浮点型

单精度浮点型:float --4Byte

双精度浮点型:double --8Byte

常用定义
int8_t   : typedef signed char; //one byte  = 1*8 bits
uint8_t  : typedef unsigned char; //0~255
int16_t  : typedef signed short ; // two bytes = 2*8 bits
uint16_t : typedef unsigned short ; //0~65,535
int32_t  : typedef signed int; // four bytes = 4*8 bits
uint32_t : typedef unsigned int; //0~4,294,967,295
int64_t  : typedef signed long; // 8 bytes = 8*8 bits
uint64_t : typedef unsigned long; //0~18,446,744,073,709,551,615

空间分配

struct student {
    int age;
    int height;
};

sizeof(struct student Tom);  // 8Byte,sizeof的返回值单位也是Byte
sizeof(struct student *s);  // 看编译器给指针分配多少内存;一般来说是void类型,即4Byte

数据定点化

int16_t a;  // a是16bit数
// 用a来代替一个小数(硬件进行取值)
// 若小数的精度是1024,即1024=1,那么需要占用10bite位;低10位为小数位,高5位为整数位,最高位为符号位
// a可以代表的数值为-32~31.999...
// a = 0000 0100 0000 0000 时,实际值为1
// a = 0000 0110 0000 0000 时,实际值为1.5

二进制与2的次幂

1111 1111 (二进制) = 255 (十进制) // 8位二进制的最高位是2^7,注意是7次幂
// 所以上面定点化的时候,二进制的第11位(2^10=1024)为1的时候,实际十进制是1,二进制的第10位(2^9=512)为1的时候是实际十进制0.5

c语言中的除法和右移位

int(3/2) = 1;
int(-3/2) = -2;  // 除法是向下取整

(3>>2) = 1;
(-3>>2) = -1;  // 右移之后后面的值都丢掉不用

看代码的时候多关注这个函数的输入输出及输入输出数据的流向会好懂很多

多注意数据的长度大小

题外话:板子和电脑工具之间有个服务端,这个服务端会调用板子里的驱动文件,所以fireware里的传出函数里的指向需要传出的数据指针会给到服务端,服务端会把参数传给工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值