指针初阶

发布时间:2023年12月26日

?指针类型:

书写方式:(指针类型)*p

例:int *p 就是int类型的指针,int * * p就是int指针型的指针

指针变量的类型决定解引用访问的权限,例如int类型访问四个字节,char访问一个字节

指针变量的类型也决定指针的步幅int类型指针+1步幅就是四个地址单元

不同类型的指针大小是一样的

不同位数的操作系统指针大小不同

野指针:指针对象指向的指针不明确或者没有访问权限被称为野指针

野指针出现的情况:指针未初始化,数组越界,指针指向的内存单元被回收

如何规避野指针:指针不用时或内存单元回收时置为null,以及避免指针越界

指针的运算:

指针+-整数相当于改变指针指向的位置改变

指针-指针相当于两个指针之间的元素个数

指针关系运算:指针的比较例如p1>p2那么p1就在p2的右边通过比较进行一些运算

指针与数组:

允许指针指向的地址与数组最后一个元素后一个地址进行比较但不允许与第一个元素的前一个地址进行比较

数组名即数组首地址,可以通过数组名访问数组内全部元素

arr[n]在编译器内会被翻译成*(arr(首地址)+n)所以同理n[arr]==*(n+arr)产生的结果是相同的,简单来说就是利用了编译器的机制

二级指针:指向指针的指针

二级指针存储的是一级指针对象的起始地址所以假设一个二级指针int ** pp,对他进行解应用得到是一级指针对象的起始地址,**pp解引用两次得到的是一级指针对象存储的地址

int main() 
{
	
	int a = 10;
	int * p = &a;
	int ** pp = &p;
	printf("% p,%p",pp,*pp); 
	return 0;
}

文章来源:https://blog.csdn.net/weixin_61183404/article/details/135167811
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。