C++
文章平均质量分 67
JackyWorks
关注CV、Learning、算法、网络等。
展开
-
static静态变量
一、c程序的内存分布static是用来修饰变量和函数的,而变量和函数又是组成c程序必不可少的,C程序的内存分布图如下。 C程序由下面5部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bs原创 2013-11-20 15:16:20 · 961 阅读 · 0 评论 -
指针变量向函数中传递的陷阱及解决方法
假设有一个指针变量ptr,另有一个函数Func,形参为指针。现在要将该指针变量ptr传递给函数Func,欲修改ptr的值,怎么做呢?先看以下代码: 执行结果: 可见,指针ptr的值并未改变,仍然为NULL。出现这样的结果,原因是:ptr是局部变量,当传递给函数test()时,函数不能真正使用ptr,用的只是ptr的一个备份,ptr的值不变。这是一个极易出原创 2013-11-23 16:56:30 · 772 阅读 · 0 评论 -
C++命名空间
一、 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。 1、全局变量的作用域是整个程序,在同一转载 2013-11-27 22:22:28 · 556 阅读 · 0 评论 -
多维数组详解
一、数组的逻辑结构 数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型。 比如:一维数组可以看作一个线性表; 二维数组可以看作“数据元素是一维数组”的一维数组; 等价于 三维数组可以看作“数据元素是二维数组”的一维数组;原创 2013-12-06 17:24:23 · 4370 阅读 · 0 评论 -
结构体拾遗补缺1:内存对齐与sizeof
一、结构体字节对齐 为什么需要字节对齐?计算机组成原理教导我们这样有助于加快计算机的取数速度,否则就得多花指令周期了。为此,编译器默认会对结构体进行处理(实际上其它地方的数据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址上,让宽度为4的基本数据类型(int等)都位于能被4整除的地址上,以此类推。这样,两个数中间就可能需要加入填充字节,所以整个结构体原创 2013-12-02 14:30:39 · 1106 阅读 · 0 评论 -
C与C++类型强制转换总结
一、C 风格(C-style)类型强制转换 方法比较简单,如下所示: TYPE1 A; TYPE2 B; A = (TYPE1)B; // 强制转换。 C++的四个类型强制转换符能做的,C风格的类型转换都能做。区别在于:C的强制类型转换,只是转换2个变量的类型,并不检测2个变量的之间的关系;C++的强制类型转换,会检测2个变量之间的关系,再转换原创 2013-12-09 19:07:47 · 4536 阅读 · 0 评论 -
C++常量折叠
转载自http://blog.csdn.net/yby4769250/article/details/7359278今天回顾了大学这几年学习C++的点点滴滴,在回顾了“常量折叠”这里时,突然困惑了,当时学习这点知识时的理解是:可折叠的常量像宏一样,在预编译阶段对常量的引用一律被替换为常量所对应的值,就和普通的宏替换没什么区别,并且,编译器不会为该常量分配空间。现在回顾起来,当时是多么的转载 2013-12-09 20:52:52 · 349 阅读 · 0 评论 -
结构体拾遗补缺2:结构体的位域(位段)
一、位域的定义 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同原创 2013-12-02 22:06:21 · 783 阅读 · 0 评论