C语言标量变向量的函数,C/C++——部分语法补充

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源创计划”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值