指针是内存单元的编号---地址(是一类特殊的数据---具有指向含义的值)
0x1000 //房间的编号
指针就是地址
1.指针(类型)也是一种数据类型(地址类型),这种数据类型专门用来处理地址这种数据(具有指向含义的值---指向内存单元)
2.指针的值是个地址
3.指针变量
C语言表示指针类型:
定义指针变量:
语法:基类型 * 指针变量名
1.基类型:表示的是指针指向的那块内存空间存放的数据类型
基类型,可以是整型、浮点型、字符型、也可以是构造类型、也可以是指针类型、也可以是空类型
2.*:表示此时定义的不是普通变量,而是指针类型的变量
//相当于是个修饰符,用来说明是指针类型
3.指针变量名:标识符 和变量名命名规则一样
int * p; //定义了一个指针类型的变量 p(1)在64位系统上,指针类型都是8字节
(2)这个空间放的是地址(内存单元的编号)
(3)p中要放的地址,看基类型,基类型决定了p中能存放的是一块存放int型数据的空间的地址
int a = 10; int *p = &a; //说p指向了a注意:
a的数据类型 int 型
p的数据类型 int*型 //指针类型,表示能处理的是int型所在空间的地址
需要分清楚:
p本身 --- 指针类型变量
p指向目标 --- 就是基类型的空间地址
通过指针变量访问
通过p本身 --- 得到地址 --- 找到对应的内存空间
指针运算符 *//间接访问运算
*p可以访问a所在的空间
运算过程:
1.拿出p中的值,到内存中定位
2.从定位处开始偏移sizeof(基类型)大小的一块空间
3.将这块空间当作一个基类型的变量来看
*p --- int型的变量
直接访问:通过a访问就是直接访问
间接访问:通过p实现的访问就是间接访问
指针最核心的用途:
在被调函数中实现对主调函数中数据的修改