本书覆盖了C++的所有基础知识,主要内容包括:C语言概述、数据类型与表达式、流程控制语句、数组、函数、结构体育简单链表、类和对象、继承与多态性、友元函数与运算符重载、模板与异常处理、输入/输出流。内容深入浅出,典型实例讲解精炼,并配有相应练习题。
更多科学出版社服务,请扫码获取。
《普通高等教育'十二五'规划教材:C++程序设计教程》可作为高等院校C++语言程序设计的教材,也可作为程序设计爱好者的参考用书。
类型定义不同于结构体类型说明,类型定义的本质是对一个已存在的类型重新命名,并不是定义新的数据类型,也不能定义变量。
6.2动态空间
6.2.1 动态空间的分配
通常情况下,给变量分配内存空间时都是编译器根据变量的类型预先分配的,这种内存分配称为静态存储分配。但有些操作不能预先确定需要分配多少内存,只有在运行程序时,系统根据运行要求进行内存分配,这种内存分配方法称为动态存储分配。
在C++程序中可以通过new运算符动态申请空问,new的运算结果是动态申请空问的首地址。动态创建的内存空问本身没有名字,可通过指向该内存空间的指针来操作。
用new运算符动态申请空间的格式有以下3种。
(1)动态申请一个变量空间,其一般格式如下:
指针变量=new数据类型;
动态空间分配不成功时,指针变量的值为0;若空间申请成功,指针变量保存该空间的地址。数据类型可以是整型、字符型和结构体类型等,指针变量的类型必须与所分配动态内存的类型一致。例如:
int*pointer;pointer=new int;
(2)动态申请一个变量空间,并为其赋初始值,一般格式如下:
指针变量=new数据类型(数值);
数据类型只能是基本数据类型,括号内的数值为所分配内存空间的初始化值。例如:
float*pointer;
pointer=new float(3.3);
(3)动态申请一维数组空间,其一般格式如下:
指针变量=new数据类型;
动态申请数组空问时,数组大小一般为整型,表示数组元素的个数,可以是变量;指针变量保存该空间的首地址。例如:
char*pointer; pointer=new char;
再如:
char*p4,*p2,*p3;
int*q1,*q2;
P1=new char; //A
p2=new char('a'); //B
p3=new char; //C
q1=new int; //D
q2=new int(123); //E
A行动态申请了一个字符型内存空间,使p1指向它;C行动态申请了10个元素的数组空间,使p3指向它;D行动态申请了一个整型内存空间,并将空间的首地址赋给q1;B行和E行在动态申请空间的同时初始化。如需将空间中的值输出,则可以通过p2指针来间接操作。