指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。
存放地址的变量为指针变量。
指针的大小在32位平台是4个字节,在64位平台是8个字节。
指针类型决定了指针进行解引用操作时能够访问空间的大小。
int* p; *p可访问4个字节
chat* p; *p可访问1个字节
double* p; *p可访问8个字节
指针类型决定了指针走一步走多远(步长)
int* p; *p-->4
chat* p; *p-->1
double* p; *p-->8
局部变量未初始化,里面默认存放的是一个随机值。
野指针原因:
1.指针未初始化
2.指针越界访问
3.指针指向的空间释放
如何避免野指针:
1.指针初始化
NULL--用来初始化指针,给指针赋值
2.小心指针越界
3.指针指向空间释放及时置NULL
4.指针使用之前检查有效性
指针运算:
1.指针+-整数
2.指针-指针(同一空间内得到的是指针之间的元素个数)
3.指针的关系运算(可与指向数组最后一个元素后面的内存位置的指针比较,但是不允许与指向数组第一个元素之前的内存位置的指针比较)
指针和数组:
数组名不是首元素的地址的情况:
1.&数组名时,数组名表示整个数组,表示取整个数组的地址。
2.sizeof(数组名)-数组名表示的整个数组,表示计算整个数组的大小。
二级指针:
int main
{
int a=10;
int* pa=&a;
int** ppa=&pa; //二级指针ppa
}
指针数组:存放指针的数组
int* arr[3]={&a, &b, &c};