指针是什么?指针和指针的类型?野指针 指针运算 指针和数组 二级指针指针数组
指针是一个编程语言的对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需要的变量单元,可以说,地址指向该变量单元。因此,将地址形象化称为指针。意思是通过它能找到它为地址的内存单元。
可知他们的长度都是4或者8。
指针类型决定了指针进行解引用操作时候,能够访问的空间大小。
int*p:*p可访问4个字节
char*p:*p可访问1个字节
double*p:*p可访问8个字节
指针类型决定了指针+1会向后跳几个字节。
指针类型决定了:指针一步走多远(指针的步长)
这里地址存放的是数组的首元素的地址。
野指针:
野指针是指指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
野指针成因:
1、指针没有初始化。
2、指针越界访问
3、指针指向的空间已经被释放了
如何避免野指针?
1、指针初始化
2、小心指针越界
3、指针指向空间释放即使置NULL
4、指针使用之前检查有效性
指针的运算
1、指针+-整数
2、指针-指针
3、指针的关系运算
指针-指针=中间元素的个数,可以从如下看出,大地址减小地址是中间元素的个数,如果是小地址-大地址的绝对值是中间元素的个数。
通过指针减指针来实现求字符串长度
1、&arr--&数组名--数组名不是首元素的地址,是数组名这里表示整个数组
--&数组名:表示取出的是整个数组的地址
2、sizeof(arr)---sizeof(数组名):此时此刻数组名不是首元素地址,这里表示整个元素的数组,
----sizeof(数组名)计算的是整个数组的大小
😁如果我们对地址加一,这三者又有什么区别呢?
🏆二级指针
1、整形数组-存放整形
2、字符数组-存放字符
3、指针数组-存放指针
(里面放的每一个元素都是int*的类型)