6.地址:
1)计算机硬件系统的内部存储器中,拥有大量的存储单元(容量为1字节),为了方便管理,必须为每一个存储单元编号,这个编号就是存储单元的地址,每个村吨单元都有一个唯一的地址。
内存地址—内存中存储单元的编号
2)在地址所标识的存储单元中存放数据:
注意:内存单元的地址与内存单元中的数据是两个完全不同的概念
变量地址—系统分配给变量的内存单元的起始地址
7.指针的概念:内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常把这个地址称为指针。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。
8.指针变量改良剂定义方法:
1)指针变量:存放指针的变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
注意:严格意义上说,指针是一个地址,是一个常量。指针变量存放一个地址,是一个变量。
2)定义指针变量:
对指针变量的定义包括三个内容:
指针类型说明,即定义变量为一个指针比阿娘 指针变量名 变量值(指针)
一般形式为:类型说明符 *变量名
*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。例如:int *p;//一个指向整型变量的指针。P只能存放一个int类型的变量的地址。
注意事项:
9.指针变量的初始化和引用:
1)指针变量的初始化方法(应该用地址初始化):
(1)定义的同时进行初始化:
完全初始化:
Int a=5;
Int *p=&a;//用a的地址初始化p这个指针变量。另一种描述方法,p指向a
Int *p2=&a, *p1=&a;//p1.,p2都指向了a
部分初始化:
Int *p3=&b,*p4;
P4=&b;
(2)如果定义了一个指针变量,但是我们不知道让这个指针指向谁
Int *p5=NULL;//空指针
Int *p6=0;//空,把一个指针赋值一个空,什么也不指
(3)先定义后初始化:
Int *p;
P=NULL;//不推荐这么写
常见错误:
int *p8=1000;//错误
(4)注意:多个指针变量可以指向同一个地址;指针的指向是可以改变的;指针没有初始化里面是一个垃圾值,我们称为野指针(可能会导致程序崩溃或访问不该方位的数据)
2)用*来获取指针变量指向的存储单元的内容:
定义了一个整型变量 *p,p是一个指针变量
*指针变量 作用:获取指针变量指向的内存空间的内容;
获取指针变量所对应的存储单元
Int a=5;
Int *p=&a;
Int value=*p;//value==5,此处非定义一个指针变量,而是取值
总结“*“的两种用法:
用于定义一个指针变量 存储指针变量指向的存储空间的内容
Int a=5;
Int *p=&a;
*p=100;
Int value=*p;//vaule==100
地址都占8个字节
10.指针常见的应用场所:
1)在函数中可以修改主调函数中的变量
2)让函数有多个返回值
11.二级指针:
1)如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。也成为”二级指针“
12.定义什么类型的指针就应该指向什么类型的变量:
64位编译器下,任何指针变量都占8个字节。Void *p;//空指针
|