目录
指针介绍
指针:在存储过程中,内存被分成一块一块的,每一个都有一个编号,这个编号就叫地址,通过地址可以找到(指向)这个内存单元,所以地址也叫指针。
指针变量:用来存放指针(地址)的。
指针大小:32位机器中是(32个比特位)4个字节,64位机器中是8个字节
eg:
int a=10;//a占4个字节
int *pa=&a;//拿到的是a的4个字节中的第一个字节
指针和指针类型
指针类型决定了指针解引用的权限有多大(能操作几个字节)。
指针类型决定了指针走一步能有多远(步长),
野指针
概念:指针指向的位置是不可知的。
原因:
- 指针未初始化
- 指针越界访问
- 指针指向的空间释放
解决:1.初始化,指针初始化则置空。
2.避免越界
3.指针使用前检查有效性
4.指针释放要置空
指针运算
1.指针关系运算(地址比较)
2.指针+-整数
例题如下:
3.(指针相减的前提是两个指针指的相同)指针-指针=两个指针的元素个数如下:
指针和数组
数组名是首元素的(首)地址
由图上可知p+i就是下标为i的元素地址
所以*(p+i)=i;
arr[2]<==>*(arr+2)<==>*(p+2)<==>*(2+p)<==>*(2+arr)<==>2[arr](访问数组时[]是一个操作符,arr与2是俩个操作数)
p[2]<==>*(p+2)<==>arr[2]
二级指针
如下pa为一级指针,把pa的地址存放在ppa中,ppa为二级指针:
int a = 10;
int *pa = &a;//*说明了pa是指针变量,pa指向的a为int型,所以类型为int
int* *ppa= &pa;//ppa指向的pa为int*型,所以类型为int*
*ppa==pa
*pa==a
所以:**ppa==a
指针数组--数组
如同好孩子,重点是孩子
概念:存放指针的数组eg:int *pa[5];-->存放的是整型指针
这个先认识下就好了
好啦今天课程就到这里了,拜拜┗|`O′|┛ 嗷~~