摘要:
在示例程序中经常可以看到argc和argv这两个参数 ,在调试代码过程中遇到main函数为int main( int argc, char* argv[] ) 这种类型时往往会报错,或者是运行起来了但命令窗口一闪而过,没有出来结果。整理如下: 带形参的main函数,如 main( int argc, 阅读全文
摘要:
C&C++的区别 1) C 是面向过程的语言,而 C++是面向对象的语言。 2) C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还有 new/delete 关键字。 3) 接下来就不得不谈到 C 中的 struct 和 C++的类,C++的类是 C 所没有的 阅读全文
摘要:
C++中的成员: 成员变量:静态变量、非静态变量 成员函数:静态函数、非静态函数、虚函数 1. 简单对象模型 对象中只存放指向成员的指针,这么做可以避免成员不同类型,不同存储空间的尴尬; 对象所占内存大小为指针大小 * 成员数量(成员函数 + 成员变量)。 2. 表格驱动对象模型 对象本身只有两个指 阅读全文
摘要:
为什么C++ 中空类的大小是1个字节? 1、对于结构体和空类大小是 1个字节 这个问题,首先这是一个C++问题,在C语言下空结构体大小为0 (当然这是编译器相关的)。这里的空类和空结构体是指类或结构体中没有任何成员。 2、在C++下,空类和空结构体的大小是1(编译器相关),这是为什么呢?为什么不是0 阅读全文
摘要:
内存对齐 理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占4+1=5byte;但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。 现代计算机中内存空间都是按照 byte 划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地 阅读全文
摘要:
C/C++ 语言的编译链接过程 源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件 1) 预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。包括宏定义替换、条件编译指令、头文件包含指令、特殊符号。 预编译程序所完成的基本上是对源程序的“替代”工作。经过 阅读全文