随笔分类 -  编程常识

1

遇到的问题
gcc -D
摘要:遇到了一个问题,讲了一个gcc -d的编译选项,之前没有用过的 gcc -D 在编译源文件的同时,进行宏定义。比如: gcc -Daa file.c 相当于在file.c中 #define aa 阅读全文

posted @ 2017-04-15 09:57 暴力的轮胎 阅读(449) 评论(0) 推荐(0)

c语言数据读入---sscanf、fscanf
摘要:#include #include #include #include using namespace std; const int Max = 10000; char str[Max], name[Max], f1[Max], f2[Max], idNum[Max]; int main() { FILE *fd; if((fd = fopen("C:\\Users... 阅读全文

posted @ 2017-04-12 15:27 暴力的轮胎 阅读(277) 评论(0) 推荐(0)

笔试题的各种trick
摘要:%x 默认去掉前导零 #include<stdint.h> #include<stdio.h> union X { int32_t a; struct { int16_t b; int16_t c; }; }; int main(){ X x; x.a=0x20150810; printf("%x, 阅读全文

posted @ 2017-04-01 17:11 暴力的轮胎 阅读(455) 评论(0) 推荐(0)

震惊!double输入输出的秘密竟然是~
摘要:遇到了一个神奇的事情: double遇到printf函数竟然是用%f输出的! scanf函数用%lf来读入double。 (严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。) 阅读全文

posted @ 2017-03-06 21:50 暴力的轮胎 阅读(383) 评论(0) 推荐(0)

C/C++自实现的函数(memset, memcpy, atoi)
摘要:函数原型: 关于void * 因为任何类型的指针都可以传入memset函数,这也真是体现了内存操作函数的意义,因为他操作的对象仅仅是一片内存,而不论这片内存是什么类型! void无类型,其实是一种类型上的抽象,它可以转换成任何类型! 函数原型: 函数原型: 实现过程主要注意:int范围是否合理(用l 阅读全文

posted @ 2017-02-27 10:42 暴力的轮胎 阅读(348) 评论(0) 推荐(0)

STL内存分配方式
摘要:关于STL用的很多比如map, vector, set, queue, stack等等。很少关注它的内存分配情况,但是经常遇到比如使用map,不停的在map中插入了一些很小的对象,然后释放了一些,然后想要再申请的时候出现了OutOfMemory的错误; 这是由于内存碎片化导致的。 STL分配内存的工 阅读全文

posted @ 2017-02-27 09:26 暴力的轮胎 阅读(564) 评论(0) 推荐(0)

对数组名取地址&a和 数组首地址a
摘要:两者虽然打印出的地址值相同,但是还是有很大区别滴。 可以看到&a + 1是要跨越整个数组长度的! 84-70=14(Hex) = 20(dec) 刚好20/4(bytes/地址)=5个int型跨越完成! 阅读全文

posted @ 2017-02-22 17:04 暴力的轮胎 阅读(259) 评论(0) 推荐(0)

红黑树与AVL(平衡二叉树)的区别
摘要:关于红黑树和AVL树,来自网络: 1 好处 及 用途 红黑树 并不追求“完全平衡 ”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。 红黑树能够以 O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的 阅读全文

posted @ 2017-02-17 22:17 暴力的轮胎 阅读(7316) 评论(0) 推荐(2)

char类型输出地址
摘要:问题描述: 当输出char的地址时,发现输出的是一个字符: 因为cout得到一个char类型的地址,默认当做字符串来输出的,所以会导致输出乱码. 使用char*类型指向ch,然后输出同样也会输出乱码. 解决办法: 将其转成void*(空指针)类型,这样就可以打印其地址. 阅读全文

posted @ 2017-01-05 10:26 暴力的轮胎 阅读(480) 评论(0) 推荐(0)

函数指针
摘要:用了一个小时研究了一下:C++函数指针在主函数和类成员函数中的使用。 代码如下: 阅读全文

posted @ 2016-10-14 21:07 暴力的轮胎 阅读(151) 评论(0) 推荐(0)

逻辑判断原则
摘要:判定多个条件时,遵循从左到右,短路原则。 Q: if ( conditionA && conditionB ) 和 if ( conditionA || conditionB ),是先判断conditionA还是conditionB ?跟编译器有没有关系? A: 先判断conditionA再判断co 阅读全文

posted @ 2016-10-10 10:30 暴力的轮胎 阅读(214) 评论(0) 推荐(0)

诡异之--map clear 之后可能导致size != 0的操作
摘要:结论就是:以后涉及到map.size()操作的话,必须要用Find,不要使用这种直接式的mp['c']的查询方式, 很危险。 阅读全文

posted @ 2016-09-18 09:39 暴力的轮胎 阅读(885) 评论(0) 推荐(0)

重载操作符- 友元函数- 非/模板类重载
摘要:#include #include #include using namespace std; template class A; template ostream &operator&obj); template class A{ public: A(int i):data(i){} friend ostream& operator(ostream &out,... 阅读全文

posted @ 2016-08-25 18:10 暴力的轮胎 阅读(216) 评论(0) 推荐(0)

静态成员变量
摘要:1.静态成员函数中不能调用非静态成员。2.非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。 3.静态成员函数只能访问静态类的原因:静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内 阅读全文

posted @ 2016-08-25 09:55 暴力的轮胎 阅读(161) 评论(0) 推荐(0)

函数指针的使用
摘要:一个函数在编译时会被分配给一个入口地址,这个入口地址就称为函数的指针,正如同指针是一个变量的地址一样。函数指针的用途很多,最常用的用途之一就是把指针作为参数传递到其他函数。显然,函数指针为我们编程提供了灵活性。 阅读全文

posted @ 2016-08-24 11:00 暴力的轮胎 阅读(163) 评论(0) 推荐(0)

C++ friend关键字
摘要:友元:友元函数 友元类。 友元函数:不属于任何类,只是在类中声明一下(可以放在 private 或者 public,没有区别),告诉这个类,这个函数是你的朋友,当然朋友不是白当的:这个函数可以访问你的私有成员变量! 毫无疑问,这破坏了类的封装性,可能出现安全问题,那又怎么样~ 毕竟还是朋友。 友元类 阅读全文

posted @ 2016-06-17 01:11 暴力的轮胎 阅读(441) 评论(0) 推荐(0)

c/c++ 参数传递 - 数组
摘要:对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用。不是值传递,这是由C/C++函数实现机制决定的。一下三种函数生命完全等价: void func(int array[10]) void func(int array[]) void func(int *array) 测试代码 阅读全文

posted @ 2016-05-14 12:49 暴力的轮胎 阅读(749) 评论(0) 推荐(0)

进程间的通信方式与进程间同步方式
摘要:进程间的通信:传递一些变量来相互沟通; #管道 #有名管道 #信号量 #信号 #共享内存 #消息队列 #套接字 # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 阅读全文

posted @ 2016-04-17 10:30 暴力的轮胎 阅读(951) 评论(0) 推荐(0)

c的二级指针
摘要:"c 语言的精华在于指针的灵活性。学好指针的目的在于尽可能少的使用指针。" 在敲binary search tree(二叉查找树),遇到了问题。在删除的时候,如果删除的是root节点,那么要改变根节点的地址,在实现时会非常卵痛。后来发现有一种好的方法就是使用二级指针,这样可以轻松改变root节点的地 阅读全文

posted @ 2016-04-16 15:01 暴力的轮胎 阅读(312) 评论(0) 推荐(0)

二维指针不能指向二维数组
摘要:发现问题: 遇到了一个指针问题:我尝试用一个二维指针指向一个二维数组,发现编译不能通过。 eg: int vis[10][10], int **vis = vis; 问题分析: 后来发现 int** 是指向指针数组的指针,二维数组其实只是一个指针,而二级指针是指向指针的指针,所以二者并不等价。如上例 阅读全文

posted @ 2016-04-01 09:57 暴力的轮胎 阅读(620) 评论(0) 推荐(0)

1

导航