摘要:
C++一般被认为是C的超集合(Superset),但这并不严谨。大部分的C代码可以很轻易的在C++中正确编译,但仍有少数差异,导致某些有效的C代码在C++中失效,或者在C++中有不同的行为。 最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码: 从vo 阅读全文
摘要:
1 //计算一段程序运行的时间 2 #include<iostream> 3 #include<time.h> 4 using namespace std; 5 int main() 6 { 7 clock_t startTime,endTime; 8 startTime = clock();//计 阅读全文
摘要:
阻塞模式:(默认) VTIME定义要求等待的时间量(取值不能大于cc_t)。 VMIN定义了要求等待的最小字节数。 options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间(单位为分秒,秒的十分之一) options.c_cc[VMIN] = Y; //设置要求 阅读全文
摘要:
TX2串口缓冲区大小23字节 在很多入门级教程中,串口收发都是:接收一个数据,触发中断,然后把数据发回来。这种处理方式是没有缓冲的,当数量太大的时候,亦或者当数据接收太快的时候,我们来不及处理已经收到的数据,那么,当再次收到数据的时候,就会将之前还未处理的数据覆盖掉。那么就会出现丢包的现象了,对我们 阅读全文
摘要:
Manacher Algorithm算法,俗称马拉车算法,其时间复杂为O(n)。该算法是利用回文串的特性来避免重复计算的。 在时间复杂度为O(n^2)的算法中,我们在遍历的过程要考虑到回文串长度的奇偶性,比如说“abba”的长度为偶数,“abcba”的长度为奇数,这样在寻找最长回文子串的过程要分别考 阅读全文
摘要:
printf()函数的处理过程,是先将参数从右到左遍历一遍,最后才执行打印操作,而不是遍历一个打印一个。 编译器在处理前置,和后置时是不一样的。 在处理后置时:是将值放入临时量中,在输出时直接从临时量中取值 在处理前置时:是等运算完成后,直接从I的地址中取值 也就是说,编译器对每个后置运算符会保存一 阅读全文
摘要:
1.头文件 #include<stack> 2.定义:stack<int >s,int类型 stack<char>s,char类型的, stack<double>,double类型的, 等等 s.pop():从栈顶删除元素 s.push():从栈顶添加元素 s.size():计算栈元素个数 s.to 阅读全文
摘要:
vector vector<int> ilist4(7); ilist4中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist4被初始化为包含7个0。 vector<int> ilist5(7,3); 指定值初始化,ilist5被初始化为包含7个值为3的int v 阅读全文
摘要:
pci设备与其它接口的设备(如i2c设备)最大的不同是存在内存地址空间和配置地址空间 首先区分一下IO空间和内存空间cpu会访问的设备一般有内存和外设寄存器,如下图所示。x86架构采用独立编址将内存操作与外设IO操作分开了才有了内存空间和IO空间的区分,x86平台cpu内部对内存和外设寄存器访问的指 阅读全文
摘要:
声明一个数组时,编译器将根据声明所指定的元素数量为为数组保留内存空间,然后再创建数组名,它的值是一个常量,指向这段空间的起始位置。 声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何整型值分配内存空间。而且,指针变量并未被初始化为指向任何现有的内存空间,如果它是一个自动变量,它甚至根本 阅读全文