C++程序的内存空间当一个程序准备运行时,操作地址系统会为程序分配一块内存空栈顶0013FF18局部变量间,C++程序的内存通常被分P栈区0013FF240013FF80为四个区:函数的返回地址0013FF28004018F10013FF2C函数的形参一全局数据区:存放全局变量、静栈底004010A0voidfunp=newchar[n+1]态变量、字符串常量、常变量for(int m=0,m<n,m++)p[m]-A'+m,代码区:存放代码10040123F程序入口代码区voidmain()一堆区:用于动态内存分配004018E8LI:funO.L2:004018F4cout<<"Adddress0046C01C全局只读变量全局数据区全局变量00474DC0k0047773C局部静态变量00480410ABCDET'GH堆区TUT
• 当一个程序准备运行时,操作 系统会为程序分配一块内存空 间,C++程序的内存通常被分 为四个区: – 全局数据区:存放全局变量、静 态变量、字符串常量、常变量 – 代码区:存放代码 – 堆区:用于动态内存分配 C++程序的内存空间 地址 栈顶 0013FF18 m p 局部变量 k 0013FF24 0013FF80 栈区 0013FF28 004018F1 函数的返回地址 0013FF2C i j 函数的形参 栈底 004010A0 void fun() { p=new char[n+1]; for(int m=0;m<n;m++) p[m]='A'+m; . } 0040123F void main() 程序入口 代码区 { 004018E8 L1: fun(); 004018F4 L2: cout<<"Adddress. . } . 0046C01C i j 全局只读变量 . 全局数据区 00474DC0 k 全局变量 . 0047773C l 局部静态变量 . 00480410 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 堆区 'I' 'J
函数参数的按值传递,函数参数传递过程的实质是将实参值通过栈空间一一传送给形参的过程。返回类型函数名(形参1.形参2..形参n)牛3函数定义函数体;1实参1的值栈内存实参2的值实参n的值函数调用函数名(实参1,实参2,…,实参n);
函数参数的按值传递 • 函数参数传递过程的实质是将实参值 通过栈空间一一传送给形参的过程。 函数调用 函数定义 返回类型 函数名 (形参 1, 形参 2, ., 形参 n ) { 函数体; } 栈内存 函数名 (实参 1, 实参 2, ., 实参 n ); 实参 1 的值 实参 2 的值 . 实参 n的值