- 浏览: 1650286 次
最新评论
-
yyz420911451:
这题有错呀;__cplusplus,前面是俩下划线 俩下划线, ...
如何判断一段程序是由C编译程序还是由C++编译程序编译的 -
zhikook:
...
android surfaceflinger研究----SurfaceFlinger loop -
望月怀远:
精彩啊,写的太好了
Delphi 编写ActiveX控件(OCX控件)的知识和样例
文章列表
原贴最初发表在QQ空间:普通C++程序员 VS 文艺C++程序员,http://user.qzone.qq.com/31731705/blog/1323153107
BBS上看到一个讲C++的帖子, C++ 这孩子 是不是误入歧途了?,让我想起了普通青年和文艺青年。
看这个经典的NB
程序,求一个数有多少bit
。J
普通C++
程序员
namespace traditional
{
int bits_of(int remain)
{
if (remain)
return 1+bits_of( rema ...
- 2011-12-12 14:19
- 浏览 905
- 评论(0)
<wbr><wbr><wbr><wbr>VC++中timer很容易给人感觉是多线程的。其实不然,他是通过消息触发事件的。通过SetTimer函数设定定时器后,在规定时间内向消息队列中加入wm_timer消息来触发事件。并且只有该消息返回后才处理下个消息。</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>可以通过程序来验证。</wbr></wbr></wbr>
BOOL bThreadE ...
- 2011-12-12 11:27
- 浏览 1299
- 评论(0)
已知类String的原型为:class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
//普通构造函数
String::String( ...
- 2011-12-12 09:20
- 浏览 1129
- 评论(0)
static关键字至少有下列n个作用:
(1) 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2) 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3) 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4) 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5) 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
c ...
- 2011-12-12 09:20
- 浏览 836
- 评论(0)
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 存放内容
0x4000 0x34
0x4001 0x12
而在Big-endian模式CPU内存中的存放方式则为: ...
- 2011-12-12 09:20
- 浏览 1062
- 评论(0)
已知类String的原型为:class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
//普通构造函数
String::String( ...
- 2011-12-12 09:20
- 浏览 894
- 评论(0)
static关键字至少有下列n个作用:
(1) 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2) 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3) 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4) 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5) 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
c ...
- 2011-12-12 09:20
- 浏览 774
- 评论(0)
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 存放内容
0x4000 0x34
0x4001 0x12
而在Big-endian模式CPU内存中的存放方式则为: ...
- 2011-12-12 09:20
- 浏览 797
- 评论(0)
使用通常的做法会溢出,这里要使用数组的方法。例如:123*20 相当于 100*20 + 20*20+3*20#include <stdio.h>
int main()
{
int n = 1;
scanf("%d",&n);
int a[20000];
int carry;
int i;
int digit = 1;
a[0] = 1;
int temp;
for(i = 2; i <= n; ++i)
{
carry = 0;
for(int j = 1; j <= digit; ++j) //digit 大数的 ...
- 2011-12-12 09:19
- 浏览 1168
- 评论(0)
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。
可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1) /2 ,就可根据完全二叉树的结点总数计算出叶子结点数。
700/2=350个叶子 ...
- 2011-12-12 09:19
- 浏览 1352
- 评论(0)
使用通常的做法会溢出,这里要使用数组的方法。例如:123*20 相当于 100*20 + 20*20+3*20#include <stdio.h>
int main()
{
int n = 1;
scanf("%d",&n);
int a[20000];
int carry;
int i;
int digit = 1;
a[0] = 1;
int temp;
for(i = 2; i <= n; ++i)
{
carry = 0;
for(int j = 1; j <= digit; ++j) //digit 大数的 ...
- 2011-12-12 09:19
- 浏览 1257
- 评论(0)
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。
可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1) /2 ,就可根据完全二叉树的结点总数计算出叶子结点数。
700/2=350个叶子 ...
- 2011-12-12 09:19
- 浏览 1071
- 评论(0)
一、一般用法
我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
用法:
#include<cstdio>
#include<climits>
using namespace std;
#define STR(s) #s
#define CONS(a,b) int(a##e##b)
int main()
{
printf(STR(vck)); // 输出字符串"vck"
printf("%d\n", CONS(2,3)); // 2e3 输出:2000
return 0;
}
二、当宏参数是 ...
- 2011-12-12 09:18
- 浏览 741
- 评论(0)
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
MIN(*p++, b)会产生宏的副作用
剖析:
这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。程序员对宏定义的使用要非常小心,特别要注意两个问题:
(1) 谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答:
#define MIN(A,B) (A) <= (B) ? (A) : (B)
#define MIN(A,B) (A &l ...
- 2011-12-12 09:18
- 浏览 10165
- 评论(0)
一、一般用法
我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
用法:
#include<cstdio>
#include<climits>
using namespace std;
#define STR(s) #s
#define CONS(a,b) int(a##e##b)
int main()
{
printf(STR(vck)); // 输出字符串"vck"
printf("%d\n", CONS(2,3)); // 2e3 输出:2000
return 0;
}
二、当宏参数是 ...
- 2011-12-12 09:18
- 浏览 766
- 评论(0)