指针的深入理解第一篇(基本概念与一维数组)

重要干货放前边:
对于分辨指针的类型的方法(感谢大佬的思路):
从变量名开始(前边为数据类型说明符)后边依据运算符的前后顺序结合
例:
int * arr[ ]
因为[ ]优先级比*高,所以arr先与 [ ]结合,所以为一个数组,数据类型是int 型 所以该句是一个数组(数组里面的数据类型是指针类型)即 指针数组
又如 int (
arr)[10]。因为()运算符优先级高 所以 先知道 它是一个变量 ,然后与[ ]
结合 就是一个指向数组的一个指针,然后与int 结合,所以为 一个指向数组的指针(数组的类型为int 型)

基本概念

1.首先要明确指针是一个存着地址的变量

2.指针的声明格式:
数据类型 * 变量名
在这里,解引用操作符(*),用于帮助编译器识别它是一个指针变量

3.指针变量的大小
在32位平台下,指针变量的大小(int *,char *,float * ,double *,void *)的大小都为4个字节。事实上,结构体的指针变量大小也为4个字节

4.指针赋值的方法

a.利用指针地址(&)分配变量的地址。

	int x=40;
	int *ptr;	ptr=&x;

b.让指针变量指向来自堆的动态分配地址

	int *ptr;
	ptr=(int *)malloc(sizeof(int));

5.二级指针
声明方式:
类型说明符 * * 变量名
二级指针是一个指向指针变量的指针
(因为指针变量虽然存着别人的地址,不过它也是有自己的地址的)

指针运算

能使用以下运算符:
++
+

-(减号)
不能使用除法与乘法操作符

1.指针加法
<指针变量>=<指针变量>+<增加值>

<指针变量>=<指针变量>+<指针变量数据类型大小> *<增加值>
指针变量加偏移量是非常合法的操作,但不允许将指针变量加入另一个指针变量中。

Ptx1=Ptr1+Ptr2;//不合法
(减法同理)

2.两个指针变量的减法

当两个指针变量分别指向数组连续内存地址的不同位置,让它们彼
此相减得到结果差表示两个指针变量间存在的元素数目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值