C语⾔标量变向量的函数,CC++——部分语法补充
1. ⼀些关键词
extern "C"
实现C++调⽤C语⾔的代码,即在该C++⽂件中⽤编译C语⾔的⽅式编译该部分代码
静态变量static
class⾥的变量若需要⼀个同⼀的变量全局使⽤,可将该变量定义成static
2. ⼀些函数
std::pair(value1 , value2 )
c语言char的用法将两个数据组合成⼀个合体的数据,也就是⼀个结构体,例如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);
本⽂分享 CSDN - KGback。
如有侵权,请联系 support@oschina 删除。
本⽂参与“OSC源创计划”,欢迎正在阅读的你也加⼊,⼀起分享。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论