
C&C++
gale717
这个作者很懒,什么都没留下…
展开
-
c语言中static使用方法
一、c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增转载 2011-10-26 14:36:37 · 558 阅读 · 0 评论 -
C++ 50条原则
1、把C++当成一门新的语言学习(和C没啥关系!真的); 2、看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差); 3、看《The C++ Programming Language》(这本东西有影印板的)和《Inside The C++ Object Model》 (http://www、csdn、net/exper、、、、、、side-cp转载 2012-02-05 14:56:12 · 495 阅读 · 0 评论 -
字节对齐问题
讲这个问题之前首先申明的是数据类型在不同的处理器和不同的编译器所占的字节数是不同的,他们处理字节对齐的方式也不同。在gcc 编译环境下,下面几个结构体大小分别是多少呢struct MyStruct { double m4; char m1; int m3; };struct MyStruct { char m1;转载 2011-10-25 21:58:05 · 508 阅读 · 0 评论 -
c语言常见错误
#include #include int main(void){ unsigned long l1 = 0xffffffff; int *j, *k, i = 2;// *k = 4; 错误用法,只为指针分配了空间, 还没为内存指向分配空间, 程序将core dump. k = malloc(sizeof(int));; j转载 2011-10-26 14:55:21 · 457 阅读 · 0 评论 -
函数调用堆栈分析
理解调用栈最重要的两点是:栈的结构,EBP寄存器的作用。首先要认识到这样两个事实:1、一个函数调用动作可分解为:零到多个PUSH指令(用于参数入栈),一个CALL指令。CALL指令内部其实还暗含了一个将返回地址(即CALL指令下一条指令的地址)压栈的动作。2、几乎所有本地编译器都会在每个函数体之前插入类似如下指令:PUSH EBP; MOV EBP ESP;即,在程翻译 2011-10-26 14:32:43 · 409 阅读 · 0 评论 -
C语言面试题总汇 --1
4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局转载 2011-10-26 14:27:56 · 580 阅读 · 0 评论 -
位域
位域位域 : 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。转载 2011-10-26 14:26:31 · 366 阅读 · 0 评论 -
解读linux对string.h函数的实现
/* file:string.h #ifndef _LINUX_STRING_H_ #define _LINUX_STRING_H_ /* We don't want strings.h stuff being user by user stuff by accident */ #ifdef __KERNEL__ #include /* for size_t转载 2011-10-25 15:34:47 · 1060 阅读 · 0 评论 -
memcpy和memmove函数的比较与实现
区别:从DESCRIPTION看来,两者的功能基本相同,唯一不同的是,当 dest 和 src 有重叠的时候选用不同的函数可能会造成不同的结果。不妨写个小程序来测一下: 0 #i nclude 1 #i nclude 23 int main()4 {5 int i = 0;6 int a[10];7 8 for(i; i 9原创 2011-10-25 15:32:29 · 417 阅读 · 0 评论 -
extern "C"
经常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一原创 2011-10-25 22:41:34 · 405 阅读 · 0 评论 -
C unsigned int and int
首先进行一个实验,分别定义一个signed int型数据和unsigned int型数据,然后进行大小比较: unsigned int a=20; signed int b=-130;a>b?还是b>a?实验证明b>a,也就是说-130>20,为什么会出现这样的结果呢?这是因为在C语言操作中,如果遇到无符号数与有符号数之间的操作,编译器会自动转化为无符号数来进行处理,因转载 2011-10-26 14:35:21 · 803 阅读 · 0 评论 -
const
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设转载 2011-10-25 23:31:42 · 350 阅读 · 0 评论 -
memcpy和memmove函数的比较与实现
区别:从DESCRIPTION看来,两者的功能基本相同,唯一不同的是,当 dest 和 src 有重叠的时候选用不同的函数可能会造成不同的结果。不妨写个小程序来测一下: 0 #i nclude 1 #i nclude 23 int main()4 {5 int i = 0;6 int a[10];7 8 for(i; i 9转载 2011-10-25 22:50:12 · 559 阅读 · 0 评论 -
标准C++的一些约定
标准C++的一些约定 1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++03,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。 2. C++/CLI 和 C转载 2012-02-05 14:55:10 · 424 阅读 · 0 评论