指针初阶

 指针类型:

书写方式:(指针类型)*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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值