0928
4.4.5结构数组
state:没仔细看,非基本类型。不知道应用场景。
4.4.6结构中的位字段
state:略读了一遍,没懂。
--------------------------------------------------------此处需要分割线
4.5 共用体(union)
1.共用体
1.1 功能
共用体的用途之一是:当数据项使用两种或多种格式(但不会同时使用)时,可以节省空间。(因为共用体每次只能存储一个值)比如:管理一个小商品目录,有些商品的ID为整数,另有一些为字符串。可用共用体表示该商品目录。
1.2 声明与创建(同结构体)
1.2.1声明
union one4all
{
int int_val;
long long_val;
double double_val;
} ;
1.2.2 创建(初始化)
one4all pail;
pail.int_val = 15; // store an int
cout<<pail.int_val;
pail.double_val = 12.3;//store a double,but int value is lost
cout<<double_val;
1.2.3 操作(待续)
---------------------------------------------------------此处需要分割线
4.6 枚举(enum)
2.枚举
2.1 功能
与const类似,一种创建符号常量的方式.规则很严格(比如之定义了赋值运算),//为了获得最大限度的可移植性。怎么理解。
枚举更常被用来定义相关的符号常量,而不是新类型。例如:可以用枚举来定义switch 语句中使用的符号常量。(详情见第六章)
2.2 声明与创建
2.2.1声明(句法与结构体、共用体类似)
enum spectrum {red, orange, yellow, green, blue, violet, indigo, ultraviolet}
类型名:spectrum; red等8个成员作为符号常量,作为枚举量(enumberator)
2.2.2创建
2.3操作
4.7 指针和自由存储空间
3. 指针和自由存储空间
3.0新知
a.面向过程编程和OOP的区别在于什么?
答:面向过程编程是按计划编译阶段决策,OOP是在运行阶段决策。比如:旅游按计划参观还是去了之后按天气调整。举个例子:
b.常规变量VS指针变量
答:常规变量存储的值是指定值,地址是派生值;指针变量与之相反。
c.前言
–计算机程序在存储数据时,必须跟踪如下三种属性:
(1)存储的是什么类型的数据
(2)存储在哪里()地址
(3)存储的值是多少
定义一个简单变量可以实现上述目的,4.7将讨论以指针为基础的另一种策略。
----------------------------------------------------------------------------3.1功能
用于存储值的地址
指针的真正用武之地:在 程序运行(相对于编译)时为某些值分配未命名的内存。
具体说来:
a.如 int a = 2;声明了一个整型变量a,在编译时便分配了一块有名称的内存。所以可以通过名称直接访问该内存(&a).
b.但是如果要访问未命名的内存呢?
c.
3.2声明与创建
3.2.1声明
int * p;// 变量p是指针类型的变量,指向int型的某个值,用*p表示。运算符为解引用运算符。与之呈对偶关系的,int q; 声明了一个int型的变量同时被分配了一个地址,该地址为&q。其中&运算符为取地址符。
int p,q;//p为指针型,q为普通的int型。*两边的空格可选
3.3操作
3.4其他
3.4.1使用指针的金科玉律
longfellow;
felllow = 223333;
//上述两行看起来没有错,但是缺失了给fellow赋初值这一步,会导致fellow指向的地方并不是索要存储223333的地方。这种错误会导致一些最隐蔽,最难以跟踪的BUG。
所以:警告:一定要在对指针使用解引用运算符()之前,将指针初始化为一个合适的地址。
3.4.2指针和数字
intp;
p = 0xB80000//type mismatch