1. 一些关键词
extern "C"
实现C++调用C语言的代码,即在该C++文件中用编译C语言的方式编译该部分代码
静态变量static
class里的变量若需要一个同一的变量全局使用,可将该变量定义成static
2. 一些函数
std::pair(value1 , value2 )
将两个数据组合成一个合体的数据,也就是一个结构体,例如std::pair(int, float)
pair实际上是一个结构体,其成员变量是first和second。
std::make_pair
初始化一个pair使用的构造函数,也可以使用std::make_pair函数,其函数原型是:
template pair make_pair(T1 a, T2 b) {
return pair(a, b);
}
3. 一些头文件
sys/stat.h
int stat(const char *restrict pathname,struct stat *restrict buf)
返回一个结构,里面包括文件的全部属性,若成功返回0,若失败返回1;
int fstat(int fields,struct stat *buf)
由文件描述符取得文件状态,即用来将参数 field 所指向的文件状态复制到参数buf 所指向的结构体中(stat)。fstat()与stat()作用完全相同,不同之处在于传入的参数为已打开的文件描述符。
fcntl.h
int open( ,)
flag的值:O_RDONLY 以只读方式打开文件;O_WRONLY 以只写方式打开文件;O_RDWR 以可读写方式打开文件。上述三种旗标是互斥的,也就是不可同时使用
4. 某些函数的用法
sizeof()和strlen()的区别
strlen指字符的长度 sizeof指文件或者数据占的内存(字节)
例: char str[20]="0123456789";
int a=strlen(str); //a=10
int b=sizeof(str); //b=20
snprintf函数用法
int snprintf(char *buff, size_t n, const char * format, ...);
函数说明:将可变个参数(...)按照format格式化成字符串,然后将其复制到buff中,最多从(...)中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。
函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值,例:
snprintf(s,100,"%.*S",3,"abcd");
s的值为abc, %.*s 表示有两项, 第一项指定了长度,第二项则是%s的内容,所以取前三位
memcpy函数用法
void *memcpy(void *dest, const void *src, size_t n);
函数说明:从源 src 所指的内存地址的起始位置开始拷贝n个字节到目标 dest 所指的内存地址的起始位置中
memcmp函数用法
int memcmp(const void *buf1, const void *buf2, unsigned int count);
函数说明:比较内存区域buf1和buf2的前count个字节。
函数返回值:当buf1
当buf1==buf2时,返回值=0
当buf1>buf2时,返回值大于0
注意:C语言是区分大小写的
5. 高级语言中向量和标量的运算
向量和标量是不可以相加的,在C语言中可以用数组来指代向量吗?
答:在数学里,向量和标量是不可以计算的,但是在代码运行时,标量和向量是可以运算的。例如向量和标量的加法,可以将标量广播给向量中的每个元素相加,即每个向量元素都加上这个标量。
6. 数据类型
char字符型,short,int,long,long long整型
在8/32位机中:
sizeof unsigned char == 1
sizeof unsigned short == 2
sizeof unsigned int == 4
sizeof unsigned long == 4
sizeof unsigned long long == 8
在64位机中:char,shot,int,long long与8/32位机一样,只有unsigned long在32、64位机上结果不同,为8位。
枚举类型
把可能的值全都列举出来,变量的值只限于列举出来的值的范围,所有值唯一。例如:
enum data{A=1, B, C=4, D}; //数值依次为 {1,2,4,5}
5. 串口打印
(1)在单片机应用中,使用printf语句通过串口输出
使用之前必须包含相应的头文件:#include < stdio.h >
int fputc(int ch, FILE *f)//重定向,让printf输出到串口
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
(1)、打印字符串:printf("hello world!\n");
(2)、打印数字或变量:printf("a = %d\n", a);
本文分享 优快云 - KGback。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。