下面关于“联合”的题目的输出(2006-12-22 12:59)
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的设计非常适用于
求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx
++;
x =
x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
转贴,代码注入,我的最爱(2006-11-06 18:41)
[

2006/10/05 01:12 | by
给定一组数列, 求连续的最大和[转](2006-09-30 15:19)
给定一组数列,
求连续的最大和
算法:
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 解疑 内存对齐[转](2006-09-21 23:11)
关键字: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
|
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语言参数的入栈顺序?为什么这么实现?
参数从左往右依次压栈对于被调用的函数来说,对实参的处理将变得非常容易