摘要:
形参与实参的区别? 1) 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 2) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便 阅读全文
摘要:
数组和指针的区别? 1) 数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名);数组大小:sizeof(数组名)/sizeof(数组元素数据类型); 2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的 阅读全文
摘要:
程序中栈的基础知识 栈是向下生长的 向下生长指的是从内存的高地址-->低地址的方向拓展。 栈有栈底和栈顶,从上面可以知道栈顶的地址是比栈底的要低的。 对于X86体系的CPU而言,大概需要知道以下基础知识: ebp寄存器:一般叫做基址指针或者帧指针; esp寄存器:一般叫做栈指针 ebp在没有改变之前 阅读全文
摘要:
变量 1. 声明:是指出存储类型,并给存储单元指定名称。 2. 定义:是分配内存空间,还可为变量指定初始值。 3. extern关键字:通过使用extern关键字声明变量名,而不是定义它。 注: 1. 声明不一定是定义:extern声明没有分配内存空间,所以不是定义;extern告诉编译器变量在其他 阅读全文
摘要:
sizeof和strlen的区别 1.sizeof是一个操作符,strlen是库函数。 2.sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为‘\0’的字符串作参数。 3.编译器在编译时就计算出了sizeof的结果,而strlen函数必须在运行时才能计算出来。并且sizeo 阅读全文
摘要:
C++中字符串string和整数int的互相转化方式 一、string转int的方式 1.采用标准库中atoi函数。 string s = "12"; int a = atoi(s.c_str()); 对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等。或者直接使 阅读全文
摘要:
函数malloc()在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址; 函数calloc()参数size为申请地址的单元元素长度,nmemb为元素个数,即在内存中申请nmemb *size字节大小的连续地址空间; 函数realloc()给 阅读全文
摘要:
new&delete 1、new简单类型直接调用operator new分配内存;而对于复杂结构,先调用operator new分配内存,然后在分配的内存上调用构造函数;对于简单类型,new[]计算好大小后调用operator new;对于复杂数据结构,new[]先调用operator new[]分 阅读全文
摘要:
在示例程序中经常可以看到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源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。包括宏定义替换、条件编译指令、头文件包含指令、特殊符号。 预编译程序所完成的基本上是对源程序的“替代”工作。经过 阅读全文