
C++
文章平均质量分 67
rein07
这个作者很懒,什么都没留下…
展开
-
创建进程时,CreateProcess的前两个参数的作用
<br /><br />用CreateProcess创建的子进程所获得的命令行参数有以下几种情况:<br /><br />1.子进程中,WinMain函数的第三个参数lpCmdLine表示的命令行参数中除去应用程序路径、文件名以及与参数相隔的空格等字符串后的内容。比如<br /><br />父进程:<br /><br />CreateProcess(NULL, “c://test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);<br /><br /转载 2010-10-27 14:44:00 · 3975 阅读 · 0 评论 -
编程之美--不要被阶乘吓倒
问题描述:1. 给定一个整数N,那么N的阶乘N!末尾有几个0?2. 求N!的二进制表示中最低位1的位置。问题1思路和问题2思路一样,一个是求含有5的个数,一个是求含有2的个数。问题1思路:书中写到:一个数 N! = 2x x 3y x 5z…每对2和5相乘原创 2011-09-01 21:05:08 · 1427 阅读 · 0 评论 -
编程之美--1的数目
此题是典型的分析归纳法的运用。通过分析每个数的每个位为1由哪些因素组成,从而归纳总结出所有的数中1的出现规律,非常经典。没有其他更好的思路时,不妨针对个案展开分析,看看能不能找出规律,以以不变应万变。详细的分析归纳,不是我三言两语能表达的。还是直接看书吧。不过书中有个错误,以原创 2011-09-02 11:08:42 · 3176 阅读 · 4 评论 -
编程之美--寻找发帖水王
问题描述:Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)原创 2011-09-02 09:50:19 · 9953 阅读 · 10 评论 -
编程之美--寻找最大的K个数
方法一: 使用partition函数,将数组分为两组。partition函数是快速排序中用来把数组分成两部分的函数。 (1)分为两个组,sa和sb。 (2)若sa组的个数大于K,则继续在sa分组中找取最大的K个数字 。原创 2011-09-02 15:20:28 · 5902 阅读 · 3 评论 -
笔试题--extern
问题: 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 我当时以为*a只是声明了一个a变量,并不分配内存,其等价于与数组首地址的a,所以答的是可以原创 2011-09-14 10:05:28 · 1238 阅读 · 0 评论 -
大数相乘
马上要找工作了,开始温习数据结构和算法了,今天想起来曾经写过的一道题,大数相乘。记得当时根本没有仔细想算法的实现细节,就是一行一行拼代码,凑出来的。今天仔细想了下,又上网搜了些资料,先发现此方法不错。还有其他几种解法,还没来得及细细琢磨。void CBigIntegerM原创 2011-08-20 17:01:44 · 952 阅读 · 0 评论 -
华为一道机试题-操作系统任务调度问题
操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -原创 2011-09-16 09:37:35 · 4978 阅读 · 0 评论 -
为找工作练手--字符串倒置
今日写了字符串倒置的程序,非常简单。算法思路:1.把遍历字符串到中间位置2.把每个遍历到的字符与它要倒置的字符互换位置。程序如下:void reverseString(char *str){ assert(str != NULL); int length原创 2011-08-22 09:54:25 · 1582 阅读 · 2 评论 -
找工作练手--一道面试题
看到网上一道面试题,主要是考指针的。我做了下,幸好没错,分享下。1#include2 using namespace std;3 int main()4 {5 char *str[]={"welcome","to","Fortemedia","Nanjing"原创 2011-08-22 16:33:25 · 2651 阅读 · 0 评论 -
编程之美--BYTE二进制数中1的个数
书中提到五种解法,我也没想到其他方法了。1.除以2int Count(BYTE v){ int num = 0; while(v) { if(v % 2 == 1) {原创 2011-09-01 16:36:00 · 1367 阅读 · 0 评论 -
编程之美--最大公约数问题
思路:最大公约数问题也是一个非常典型的递归算法的应用。每次递归使得原来求两个大数之间的公约数转变成求两个稍微小点的数之间的公约数,要求转换的过程要保证不会改变公约数的值。这就要看其中转换的原理了。原理从《几何原本》中得出--辗转相除。假设f(x, y) 表示x,y的最大公原创 2011-09-01 15:56:01 · 3127 阅读 · 0 评论 -
CreateThread()、_beginthread()以及_beginthreadex()联系与区别
<br /><br />联系: <br />CreateThread、_beginthread和_beginthreadex都是用来启动线程的。 <br />区别: <br />_beginthread是_beginthreadex的功能子集,_beginthreadex是微软的C/C++运行时库函数,CreateThread是操作系统的函数。虽然_beginthread内部是调用_beginthreadex但他屏蔽了象安全特性这样的功能,所以_beginthread与CreateThread不转载 2010-11-09 10:24:00 · 717 阅读 · 0 评论 -
c++对齐方式总结(下)
8字节对齐(#pragma pack(8))输出结果:sizeof(struct test_t) = 12 [两个编译器输出一致]分析过程:1) 成员数据对齐#pragma pack(8)struct test_t { int a; /* 长度4 char b; /* 长度1 short c; /* 长度2 char d; /* 长度1 };#pragma pack()成员总大小=92) 整体对齐整体对齐系数 = min((max(int,short,char), 8) = 4整原创 2010-11-16 15:46:00 · 1635 阅读 · 0 评论 -
通过一个简单的例子学习编译器是如何执行程序的
<br />在vc6.0下做了个小实验,主要是想通过汇编代码来了解c++内存结构以及编译器是如何运行c++程序的,展现函数调用的具体过程,记得在实习时用vs2005也这样做了个程序,也认真剖析过。可能由于时间关系遗忘了许多vs下的汇编代码,所以感觉两个编译器是存在着区别的。下面就把上面这几点一一说明下。<br />我的源程序是这样的:<br />#include <iostream>using namespace std;class x{public : static int count原创 2010-11-15 23:08:00 · 1167 阅读 · 0 评论 -
c++对齐方式总结(上)
c++对齐方式总结原创 2010-11-16 15:21:00 · 6243 阅读 · 0 评论 -
C++ reinterpret_cast,const_cast等 显式类型转换总结
<br />reinterpret_cast,const_cast,static_cast,dynamic_cast 显式类型转换 <br /><br />Cpp代码 #include<iostream.h> int main(void) { //reinterpret_cast //将一个类型指针转换为另一个类型指针,这种在转换不修改指针变量值数据存放格式 //只需在编译时重新解释指针的类型,他可以将指针转化为一个整型数但不能用于非指针的转换 double d=9.3; d转载 2011-03-01 20:38:00 · 647 阅读 · 0 评论 -
C++命名空间
<br /> 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。<br />MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。<br />1)作用域与命名空间<br /><!--[if !supportList转载 2011-03-01 19:02:00 · 791 阅读 · 1 评论 -
关于拷贝构造函数和赋值运算符
<br />作者:冯明德<br /><br /><br /><br />重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。 <br /> <br />以下讨论中将用到的例子: class CExample{public: CExample(){pBuffer=NULL; nSize=0;} ~CExample(){delete pBuffer;} void Init(int n){ pBuffer=new char[n]; nSize=n;}private:转载 2011-03-13 20:25:00 · 498 阅读 · 0 评论 -
状态栏
创建一个状态栏需要以下几个步骤:1.构建一个CStatusBar对象。2.调用CStatusBar::Create创建状态栏窗口。3.调用CStatusBar::SetIndicators函数分配窗格,并将状态栏的每一个窗格与一个字符串ID相联系。前两步是创建其他窗口也需经过的两原创 2011-07-18 16:53:10 · 738 阅读 · 0 评论 -
编程之美--重建二叉树
给定前序遍历和中序遍历结果,比如:前序:a b d c e f 中序:d b a e c f重建这颗二叉树。思路和步骤:1.前序遍历的第一个结点必然是要重建的这棵树的根节点。比如a就是当前序列的根节点。2. 在中序序列中找到a结点,把中序遍历结果分为两个序原创 2011-09-01 11:04:57 · 1689 阅读 · 1 评论 -
找工作练手--KMP算法理解
KMP算法讲解的实在太多了,各位作者为了它的严谨性,不惜花大量篇幅证明算法的正确性,也就用了很多公式去推导。曾经看了严蔚敏和唐宁九两位老师的,写的不错,花了不少时间。找工作在即,又花了点时间温习此算法,感觉比之前有了更多的感悟。此算法的精髓在于运用匹配字符串P的右移省却了源字原创 2011-08-26 15:59:44 · 959 阅读 · 0 评论