指针
内存中的地址值,每个内存的唯一编号 ,在C中内存单元的地址是指针
指针的作用
- 取地址运算符 &
- &i 取地址运算符 & 获得变量的首地址
- 取对象运算符 *
- 根据内存地址取出内存数据 *&i 可以操作数据
指针变量
变量按照功能分可以分为两大类 :
- 普通变量: 保存数值数据
指针变量: 保存变量的地址(内存单元变量)
- 普通变量的定义 : 数据类型类型 变量名 如: int i int a =’i’
- 指针变量的定义 :数据类型 *指针变量名字 如 int *p;
* 的含义
- *两个运算 :乘法 a*b
- 定义指针变量 int *p;
- 取对象运算符 *p 根据p保存地址,取出内存单元的内容
指针的指向
指针变量保存一个对应类型变量的地址,指针变量指向这个对象,指向这个变量可以通过指针运算符访问变量
指针的相关类型
1.指针的数据类型:是指针指向对象的类型,绝对指针变量利用取对象运算符访问内存时一次访问几个字节
2.指针类型:int * 指针类型
指针使用的错误
1.指针的类型不匹配
int a=100;
int *p;
int * pa;
p =&a ;//指针类型不匹配,访问内容的方式不一样
2.野指针:指针没有合法的指向.建议给null,读写一定错误,必须先获得合法的指向,才能使用
int i=100; 变量名i访问申请其申请的内存
2级地址指针
如int **p :是用来保存一级地址指针变量 ,其他的以此类推
数组
1.相同数据类型变量的集合,变量在内存中连续
怎么定义数组
数据类型 数组名称[数组个数]
int arr[6]
数组的特点
1.数组名称代表数组首元素的首地址 arr 标识 arr[0]
2.数组定义要求个数,个数需要是常量
3.c语言不检查数组角标越界
4.计算数组元素个数的长度 : sizeof(arr)/sizeof(arr[0])