c++
文章平均质量分 67
fengkuangwarrior
这个作者很懒,什么都没留下…
展开
-
C++书籍推荐(一)
(一)语言入门:《C++ Primer》最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。《The C++ Programming Language》/《C++程序设计语言》最新版本:第三版特别版简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,转载 2009-08-20 23:36:00 · 780 阅读 · 0 评论 -
Making plain binary files using a C compiler (i386+)
我写这篇文章是因为在internet上关于这个主题的信息很少,而我的EduOS项目又需要它。对于由此文中信息所引申、引起的意外或不利之处,作者均不负有任何责任。如果因为我的糟糕英语导致你的机器故障,那是你的问题,而不是我的。1,你需要什么工具l 一个i386或者更高x86CPU配置的PCl 一个Linux发行版本,Redhat或者Slackware就不错。l 一个GNU GCC编译器。一般linu转载 2009-10-18 16:46:00 · 745 阅读 · 0 评论 -
C/C++中的结构体对齐问题(内存对齐)
由于程序运行时占用的内存过大,所以想办法给程序瘦身。在调试中发现结构体占用的size竟然和预想的不一样,原来……看看下面讲的吧,肯定会不枉此看哦!1,比如:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof(A)=6, sizeof(B)=8,为什么?注:sizeof(short)=2,sizeo转载 2009-10-18 17:02:00 · 397 阅读 · 0 评论 -
c union & struct
1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。 下例表示说明一个联合a_bc: union a_bc{ int i; char mm; }转载 2009-10-18 17:08:00 · 835 阅读 · 0 评论 -
c 标准输入输出
1.1.1 格式化输入输出函数 Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和 scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。 printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入 设备(键盘)上读数据。下面详细介绍这两个函数的用法。 一、printf()函数 printf()函数是格式转载 2009-10-18 17:10:00 · 3111 阅读 · 0 评论 -
# ## _ _VA_ARGS_ _宏相关
1.# 假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing). #incldue #define PSQR(x) printf("the square of" #x "is %d./n",(x)*(x)) i转载 2009-10-18 16:48:00 · 368 阅读 · 0 评论 -
C中CONST的使用
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。 问题:const变量 & 常量 为什么我象下面的例子一样用一个const变量来初始化转载 2009-10-18 17:12:00 · 362 阅读 · 0 评论 -
声明与函数、函数指针 (*(void (*)( ) )0)( )
在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是 (*(void (*)( ) )0)( )。看起来确实令转载 2009-11-02 01:30:00 · 407 阅读 · 0 评论 -
C/C++中的结构体对齐问题(内存对齐)
由于程序运行时占用的内存过大,所以想办法给程序瘦身。在调试中发现结构体占用的size竟然和预想的不一样,原来……看看下面讲的吧,肯定会不枉此看哦!1,比如:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof(A)=6, sizeof(B)=8,为什么?注:sizeof(short)=2,sizeo转载 2009-10-18 17:01:00 · 364 阅读 · 0 评论 -
c 内存对齐
当在C 中定义了一个结构类型时,它的大小是否等于各字段(field) 大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。首先,至少有一点可以肯定,那就是ANSI C 保证结构体中各字段在内存中出现的位置是随它们的声明顺序依次递增的,并且第一个字段的首地址等转载 2009-10-18 16:56:00 · 339 阅读 · 0 评论 -
C++书籍推荐(二)
《C++ Primer (3RD)中文版》C++ Primer的第三版结合了Stanley Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C++的深入理解。这本指导书的第三版已经被重新改写过,以便更加精确地讲述标准C++的特性和用法。在本书中,对于C++初学者特别有价值的是一些来自真实世界中的程序例子,它们说明了泛型程序(generic program)的设计、面向对象转载 2009-08-20 23:37:00 · 923 阅读 · 0 评论 -
MingWc 和DEV-C++关系
MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考 <http://www.mingw.org> 。 这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC (Microsoft Foundat转载 2009-10-04 11:02:00 · 1374 阅读 · 0 评论 -
几种C/C++的函数压栈方式
一,不同关键字,系统压栈方式1,如果函数func是__cdecl(VC下的默认调用方式),调用时情况如下int main() { //参数从右到左压栈 push 4 push 3 push 2 push 1 call func add esp 0x10 //调用者恢复堆栈指针esp,4个参数的大小是0x10(4x4) } C调用约定(即用__cdecl关键字说明)按从右至左的顺序压参数入栈转载 2009-10-15 00:41:00 · 836 阅读 · 0 评论 -
c++ export
为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)。例如:extern int n;extern struct Point p;extern class A a;expor转载 2009-10-14 22:41:00 · 4923 阅读 · 0 评论 -
C++函数调用原理理解
空程序:int main(){00411360 push ebp ;压入ebp00411361 mov ebp,esp ;ebp = esp,保留esp,待函数调用完再恢复,因为函数调用中肯定会用到esp.00411363 sub esp,0C0h ;esp-=0C0h(192);为该函数留出临时存储区;将其他指针或寄存器中的值入栈,以便在函数中使用这些寄存器。0041转载 2009-10-15 00:10:00 · 781 阅读 · 0 评论 -
系统环境变量作用
系统里的临时文件正是如此,如果积累得太多(由于非法操作造成的程序退出会形成大量此类文件滞留在硬盘中),就会造成分区紧张和大量磁盘碎片。要禁止临时文件是不可能的,何不疏导一下呢?你只需要修改一下环境变量中的临时文件目录变量。 你知道这和DLL有什么关系吗?打开一些程序时你有可能收到缺少DLL文件的错误提示,这些文件一般是程序本身自带的库或者某种语言通用的运行库。碰上这种错误,最好的方法就是下载需要的转载 2009-10-15 00:42:00 · 553 阅读 · 0 评论 -
c语言关键字Volatile的使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)转载 2009-10-15 00:43:00 · 388 阅读 · 0 评论 -
extern &&extern c
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。 2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗?转载 2009-10-15 23:44:00 · 436 阅读 · 0 评论 -
2k+1个数 k个成对 找出一次的数
给出2n+1个数其中有n个数是成对出现的找出里面只出现了一次的那个数 当然 如果先快排完了 排除掉相同的数 当然可以找到那个只出现过一次的数但是快排的复杂度是n*logn据说可以用O(n)复杂度和O(1)的额外空间解决 不知道怎么做。。。 全部一起异或。。。剩下的就是那个数。。。 是序列长度整除3,不是元素相加之类的。这个做法是一个特别的partition转载 2009-11-02 23:23:00 · 651 阅读 · 0 评论