指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。

存放地址的变量为指针变量。

指针的大小在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};