复杂数据类型
数组、指针、字符串
面向对象程序设计语言
© ~
二、指针
面向对象程序设计语言
© ~
大家有没有见过以下的等式?
1 + 1 = 5
1 + 1 = 9
二、指针
面向对象程序设计语言
© ~
指针就是内存地址码!
…
1001
1003
1005
指针:
内存中每个字节都有唯一的一个地址码。这个地址码就是指针。
二、指针
面向对象程序设计语言
© ~
我们程序用到的内存是有特定区域划分的!
程序代码区
静态内存区
动态内存区
常量
静态变量
栈
(局部变量)
堆
(动态内存分配)
指针:
同样的,在这些内存区域中的每个存储单元都有唯一的地址码。但是他们在C/C++表现出来的性质不同。
二、指针
面向对象程序设计语言
© ~
指针& 指针变量。
50920
…
1001
1003
1005
指针变量:
用来存放内存地址码的变量。因为内存地址码就是指针,所以称为指针变量。
1001:指针;p:指针变量
1001
p:5005
二、指针
面向对象程序设计语言
© ~
如同普通变量一样,用来存放指针的变量,也要事先声明之。
int * p ;
注意:
(1)指针变量一定要有类型,不能是孤立的一个* p,即使是存放无类型的指针,也要声明成“void * p;”
(2)使用“*”表示“p”不是普通整型变量,而是用来专门存放整型数据的内存地址码。
(3)声明指针变量时的数据类型,就是指针变量的类型。
二、指针
面向对象程序设计语言
© ~
现在我们来看看不同类型的指针变量。
int * p ;
float *pf;
char *pc;
内置类型变量的指针变量
自定义类型变量的指针变量
CDog * pDog;
二、指针
面向对象程序设计语言
© ~
现在我们来看看不同类型的指针变量。
int * * p;
复杂(复合)类型变量的指针变量
函数类型的指针变量
int (*fpAdd)(int, int);
二、指针
面向对象程序设计语言
© ~
指针变量在声明的时候就给它赋值,就是对它初始化。
int i = 100;
int * p = &i;
注意:
在给指针变量赋值之前一定要存在一个有意义的内存变量或者常量或者函数,否则指针变量的值不可预测,这会造成系统的崩溃。
注意:
这里又学到一个运算符“&”。
这叫“求地址运算符”。
把内存变量的首字节地址获取过来。
内置类型变量的指针变量
二、指针
面向对象程序设计语言
© ~
指针变量在声明的时候就给它赋值,就是对它初始化。
CDog aDog;
CDog * pDog = &aDog;
注意:
这和内置类型变量的指针变量初始化一样。
自定义类型变量的指针变量
复杂数据类型 来自淘豆网www.taodocs.com转载请标明出处.