http://blog.sina.com.cn/u/1247680505[订阅]
个人资料
分类
    内容读取中…
评论
读取中...
友情链接
访客
读取中...
好友
读取中...
博文
10. 下面关于“联合”的题目的输出?
a)
#i nclude <stdio.h>
union
{
int i;
char x[2];
}a;

void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf('%d',a.i);
}
答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)
b)
     main()
     {
          union{                   /*定义一个联合*/
               int i;
               struct{          &
嵌入式硬件选择(2006-12-22 12:59)

处理器的选择

  嵌入式系统的核心部件是各种类型的嵌入式处理器。据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30几个系列。但与全球PC市场不同的是,没有一种微处理器和微处理器公司可以主导嵌入式系统,仅以32位的CPU而言,就有100种以上嵌入式微处理器。由于嵌入式系统设计的差异性极大,因此选择是多样化的。

  调查上市的CPU供应商,有些公司如Motorola、Intel、AMD很有名气,而有一些小的公司,如QED(Santa Clara.CA)虽然名气很小,但也生产很优秀的微处理器。另外,有一些公司,如ARM、MIPS等,只设计但并不生产CPU,他们把生产权授予世界各地的半导体制造商。ARM是近年来在嵌入式系统有影响力的微处理器制造商,ARM的设计非常适用于

微软的笔试题(2006-12-22 12:58)
求下面函数的返回值(微软)
int func(x)
{
    int countx = 0;
    while(x)
    {
          countx ++;
          x = x&(x-1);
     }
    return countx;
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。

给定一组数列, 求连续的最大和

算法:

dp

具体做法:

 

C++优化方法总结[转](2006-09-30 13:53)
优化是一个非常大的主题,本文并不是去深入探讨性能分析理论,算法的效率,况且我也没有这个能力。我只是想把一些可以简单的应用到你的C++代码中的优化技术总结在这里,这样,当你遇到几种不同的编程策略的时候,就可以对每种策略的性能进行一个大概的估计。这也是本文的目的之所在。
一. 优化之前
在进行优化之前,我们首先应该做的是发现我们代码的瓶颈(bottleneck)在哪里。然而当你做这件事情的时候切忌从一个debug-version进行推断,因为debug-version中包含了许多额外的代码。一个debug-version可执行体要比release-version大出40%。那些额外的代码都是用来支持调试的,比如说符号的查找。大多数实现都为debug-version和release-version提供了不同的operator new以及库函数。而且,一个release-version的执行体可能已经通过多种途径进行了优化,包括不必要的临时对象的消除,循环展开,把对象移入寄存器,内联等等。
另外,我们要把调试和优化区分开来,它们是在完成不同的任务。 debug-version 是用来追捕bugs以及检查程序是否有逻辑上的问题。release-version则是用来做一些性能上的调整以及进行优化。
下面就让我们来看看有哪些代码优化技术
LNK2001错误[转](2006-09-25 12:33)
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。

  初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:

  unresolved external symbol “symbol”(不确定的外部“符号”)。

  如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。

  以下是可能产生LNK2001错误的原因:

  一.由于编码错误导致的LNK200

关键字:sizeof,字节对齐,多继承,虚拟继承,成员函数指针

前向声明:
?sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。
?但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。
?菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位扔砖砸蛋。


1. 定义:
?sizeof是何方神圣?sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。
?MSDN上的解释为:
?The sizeof keyword gives the amount of storage, in bytes, associated with a variable or

VC编程_提升程序权限(2006-09-12 21:57)

                           
1、先调用GetCurrentProcess函数取得当前进程的句柄,

2、然后调用OpenProcessToken打开当前进程的访问令牌,

3、接着调用LookupPrivilegeValue函数取得你想提升的权限的值,

4、最后调用AdjustTokenPrivileges函数给当前进程的访问令牌增加权限就可以了。

5、一般有了SeDebugPrivilege特权后,就可以杀掉除Idle外的所有进程了

//提升权限,代码实例
HANDLE hToken;              // 令牌句柄
TOKEN_PRIVILEGES tkp;       // 令牌结构指针
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hT

再贴面试题(2006-09-08 12:39)
1\ 编译中的问题:全局变量如int i=5; int*(pf)()=foo; 分别在何时被初始化?设计时候如何具体的实现。
 
1、int i = 5;在编译时初始化;int (*fp)(void) = &foo;在连接时初始化。


3\ Strlen()的C语言实现,不能使用任何变量。
 
size_t strlen(const char *s)
{
if(!s)
return -1;
return (*s)? 1 + strlen(++s) : 0;
}
 
      int StrLen(char* p)
      {
          if (*p == '\0')
             return 0;
         return StrLen(p+1) + 1;
      }

4\ C语言参数的入栈顺序?为什么这么实现?
参数从左往右依次压栈对于被调用的函数来说,对实参的处理将变得非常容易