C&C++
SpaghettiC
木有
展开
-
#define和typedef
暂记;#define的格式:#define 内容 命名如#define PI 3.14159typedef的格式:原创 2016-01-26 19:13:41 · 262 阅读 · 0 评论 -
C++的头文件<iomanip>
io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)setprecision( n ) 设显示有效数字为n位fixed小数点后六位+setprecision()控制小数点位数showpoint小数点后四位+setprecision()不足则补0fixed的作用大于showpoint原创 2016-02-22 22:13:52 · 618 阅读 · 0 评论 -
inline
inline相当于宏定义,但是比宏安全,没有了参数压栈,代码生成等操作,效率高inline int Fun(int x){ printf("%d", x);}int main(){ Fun(3); //内联函数的代码会在任何调用它的地方展开}原创 2016-02-23 16:25:30 · 320 阅读 · 0 评论 -
按位运算符^和#define的小技巧
不使用中间变量交换两个变量值int a = 1, b = 2;a = a ^ b;b = a ^ b;a = a ^ b;返回两个参数的较小值#define MIN(a, b) ((a < b)?(a):(b))原创 2016-02-23 16:17:48 · 351 阅读 · 0 评论 -
string类型中的erase()
string s("abcdefg");s.erase(s.begin(), s.end()); //可加减数字,如s.begin()+1s.erase(0, s.length()); //数字只能跟数字,不能跟迭代器:s.erase(0, 1)s.erase(s.begin() + 2); //这样只删除迭代器所在的字符s.erase(14);原创 2016-02-23 16:10:25 · 1641 阅读 · 0 评论 -
移位运算问题
long long a;a = 1 << 31; //错误,因为这里的1是int类型a = ((long long)(1)) << 31; //正确原创 2016-02-23 16:06:43 · 290 阅读 · 0 评论 -
转换成二进制
1.依次把最低位的值取出来,存入一个数组中for (i = 0; ch > 0; i++){ binary[i] = ch & 1; ch >>= 1;}2.C++有bitset可以使用3.使用itoa函数i = 1024;char b[33];char bs[33];itoa(i, b, 2);sprintf(bs, "%032s", b); //将b中的前32位原创 2016-02-23 15:54:57 · 480 阅读 · 0 评论 -
关于自增自减
char *p = "linux"; //这里的指针指向字符串常量(*p)++; //错误,相当于*p = *p + 1;字符串常量并不能修改*p++; //由于++和*同级,从右往左运算,即指针后移再指向内容int i = 0, j = 5; i = (++j); //j先自增原创 2016-02-22 22:39:03 · 340 阅读 · 0 评论 -
EOF
概念:在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。while(scanf("%s", st) != EOF) /原创 2016-02-22 21:55:53 · 379 阅读 · 0 评论 -
string类型
string st = "abc";st.empty(); //判断是否为空串st.at(2) = 'd'; //相当于st[2] = 'd';st.insert(iterator it, int n, char c); //在it处插入n个字符cst.erase(); //删除字符,填迭代器或&st[],不可填指针原创 2016-02-22 22:24:13 · 201 阅读 · 0 评论 -
关于头文件algorithm里的排序
sort()通常最快stable_sort()保证了等价元素在顺序上的稳定partial_sort()允许只排序前N个元素list::sort()操控指针,而不拷贝元素set允许在一个有序去捡快速插入删除原创 2016-02-22 22:05:11 · 726 阅读 · 0 评论 -
引用符号&以及const &的使用
声明引用#include using namespace std;int main(){ int a; int &ra = a; ra=1; //等价于 a=1;}说明:这里的ri就是i的别名,&在这里不是求地址运算,而是起标识作用。类型标识符是指目标变量的类型。声明引用时,必须同时对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,转载 2016-02-22 15:45:34 · 598 阅读 · 0 评论 -
左值和右值
左值:赋值号的左边,通常是变量。右值:赋值号右边,变量值,表达式,常量。原创 2016-02-22 20:04:27 · 256 阅读 · 0 评论 -
const的注意事项
关于const: 在C中是只读变量,可偷偷改变其值; 而在C++中是常量,局部const可以通过取地址来改变其值int *p = (int *)&a;,因为局部const放在栈区。原创 2016-02-22 17:26:59 · 347 阅读 · 0 评论 -
动态分配内存malloc和calloc
malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小: void *calloc(size_t numElements,size_t sizeOfElement);如果调用成功,函数malloc()和calloc()都将返回所分配原创 2016-02-22 17:59:59 · 481 阅读 · 0 评论 -
if语句的小技巧
int a;if (0 == a){}将判断语句里的变量写在右端,可以防止将等号写成赋值号(a = 0)的错误。原创 2016-02-22 16:49:41 · 272 阅读 · 0 评论 -
<string>和<string.h>的区别?
string是c++字符串标准库类,string.h是c语言的字符串类string可以使用字符串相加、逆序等,string.h可以使用strcmp、strcpy等string.h在c++头文件写成cstring原创 2015-11-27 12:45:22 · 428 阅读 · 0 评论 -
关于字符串的倒置
这里指的字符串有两种:char字符串:char ch[]调用头文件string.h,C++中是cstring,然后使用函数strrev(ch)。另外一种方法:调用头文件algorithm,使用函数reverse(ch, ch + n)。其中n为需要倒置的长度。string类:string s调用头文件algorithm,使原创 2015-11-29 20:18:15 · 580 阅读 · 0 评论 -
堆跟栈
栈连续内存区域,windows下大小为2M;速度快,无法控制,先进后出。用于存函数参数值,局部变量。堆不连续,系统用链表存储空闲内存地址,受虚拟内存限制大小;速度慢,先进先出。程序员申请的空间。原创 2016-02-22 18:06:10 · 206 阅读 · 0 评论