![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++语法
文章平均质量分 62
zhouhong0801
路漫漫其修远兮,吾将上下而求索。
展开
-
荷兰国旗问题
问题:把 3种颜色(0,1,2)在一个数组里,每次只可交换一次,扫描一边后,三种颜色自然分开,应为颜色为:红,白,蓝,(荷兰国旗的颜色)所也叫荷兰国旗问题! 代码:#include stdlib.h>#include iostream.h>int main()<img id="_54_734_Open_Image" onclick="function onclick(){thi原创 2007-12-11 21:20:00 · 1081 阅读 · 0 评论 -
volatile用法
一个定义为volatile的变量是说,这个变量可能会被意想不到的改变,这样编译器就不会去假设这个变量的值。精确的说,优化器在用到这个变量时,必须每次都要小心的重新读取这个变量的值,而不是使用保存在寄存器里面的备份。 问题:1- 一个参数既可以是const还可以是volatile吗?为什么?解答:可以。例如:只读的状态寄存器,它是volatile的,因为这个寄存器状态可能会被意想不到的改变。转载 2009-11-18 16:08:00 · 463 阅读 · 0 评论 -
动态内存问题
原则是:函数内的局部指针变量不会在函数退出的时候自动消亡。因为:1. 指针消亡了,不代表他所指向的内存会自动释放2. 内存被释放,不代表指针会消亡或者被置为NULL “野指针”不是NULL指针,而是指向非法内存的指针。一般不会错用NULL指针,因为可以用if语句来判断指针的内容。但是if无法判断“野指针”。 “野指针”的成因:1. 没有初始化指针变量:任原创 2009-11-16 13:25:00 · 410 阅读 · 0 评论 -
C语言要注意的一些问题
Q. 指针的好处A. 比如: 动态分配数组; 对多个相似变量的一般性访问; (模拟)按引用传递函数参数; 各种动态分配的数据结构,尤其是树和链表; 遍历数组,例如解析字符串; 高效的按引用”复制“数组和结构,特别是作为函数参数的时候。Q. 我想声明一个指针并为他分配一些空间,但却失败了。下面的代码有什么问题? char* p; *p = malloc(10);A. 这样转载 2009-06-04 10:11:00 · 597 阅读 · 0 评论 -
指向const对象的指针和const指针
1. 指向const对象的指针指向const对象的指针是一个指针,但是不能通过它来修改它所指向的对象的值。声明方法: const int *p;const指针对象在初始化后不允许对指针指向的对象的值进行修改,因此不能用一个普通的指针指向一个const指针对象。否则,如果可以用普通指针修改const指针对象的值,那就失去了const的意义。例如:const int i = 1;int *原创 2009-06-04 09:35:00 · 635 阅读 · 0 评论 -
GOOGLE扔玻璃球的面试题
题目:有一个 100 层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。 更进一步:如果有 m 层高的大厦,手中有 n 颗相同的玻璃围棋子呢?分析:为了得到两个棋子的最优策略先简化问题,看看一个棋子的情况。如果手中只有一个棋子,为了得知临界层面,你只有一种选择:从2楼开始,一层一层转载 2008-01-17 14:09:00 · 5499 阅读 · 0 评论 -
C内存分配
在C中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由应用程序去控制。一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。原创 2008-01-10 20:30:00 · 571 阅读 · 0 评论 -
生成随机数的小技巧
srand()函数Sets a random starting point.void srand( unsigned int seed );Parametersseed Seed for random-number generation RemarksThe srand function sets the starting point for generat原创 2008-01-09 20:43:00 · 513 阅读 · 0 评论 -
容器
STL支持的容器类型:1. 标准STL序列容器:vector、string、deque、list2. 非标准序列容器:slist、rope。slist是一个单向链表,rope本质上是一个重型字符串。3. 标准STL关联容器:set、multiset、map、multimap4. 非标准关联容器:hash_set原创 2008-01-06 22:28:00 · 443 阅读 · 0 评论 -
getline函数的几个小用法
1、 getline函数在遇到换行符“/n”时停止读入。eg:string line;coutgetline( cin, line ); 2、 允许程序员指定不同的停止读入标志。eg:string line; coutgetline( cin, line, ‘?’ ); // 在第一个问号处停止读入 3、 getline原创 2007-12-30 22:22:00 · 3592 阅读 · 2 评论 -
二叉树的层次遍历
前几天,宿舍一个mm问我,二叉树的层次遍历算法是如何实现的。于是,正在洗脚的我开动疲劳了一整天的脑筋,开始思考这个问题。 因为之前看算法的时候,树就看的不多,而且即使是关于二叉树的,主要也都是因为递归的原因,主要思考的是前序、中序和后序遍历。甚至于,在前面的文章中,也转载了“已知前序遍历和中序遍历,求后序遍历”这样的算法。所以,当时一时之间,我的大脑似乎有些混沌,一心原创 2007-12-26 14:50:00 · 2727 阅读 · 2 评论 -
关于C++的构造函数
1. 对象内存的分配和构造函数没有关系。对象内存的分配是由编译器来完成的,构造函数的作用是对对象本身做初始化工作,也就是给用户提供初始化类中成员变量的一种方式,在类对象有虚表的情况下,构造函数才对虚表进行初始化。.2. 如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:l 如果类有虚拟成原创 2008-03-14 22:12:00 · 417 阅读 · 0 评论 -
C++虚函数表
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 虚函数表原创 2007-12-19 21:31:00 · 903 阅读 · 2 评论 -
已知前序遍历和中序遍历,求后序遍历
已知:sa是前序遍历,sb是中序遍历后序遍历:void PostOrder( string sa, string sb ) <img id="_61_360_Open_Image" onclick="function onclick(){this.style.display=none; document.getElementByI原创 2007-12-18 18:42:00 · 1045 阅读 · 0 评论 -
迷宫问题递归算法
#include stdio.h>#include stdlib.h>#include iostream.h>#define M 8 #define N 11 <img id="_98_152_Open_Image" onclick="function onclick(){this.style.display=none; document.getElementB原创 2007-12-14 16:13:00 · 1660 阅读 · 0 评论 -
用两个栈来模拟队列
问题: 请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给变量x;Sempty(ST):判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列; dequeue:删除一个元素出队列;queue_empty:判队列为空。分析: 栈的原创 2007-12-12 14:27:00 · 2303 阅读 · 0 评论 -
堆和栈的区别
l 程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:1. 栈区(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。2. 堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。需要注意的是这里的堆与数据结构中的堆是两回事,分配方式类似于链表。转载 2009-11-17 15:09:00 · 480 阅读 · 0 评论