C语言细节之指针知识体系归纳总结


前言

指针阶段,需要用心来学习,快可能会导致慢的效果。应该先从整体上学习指针的知识体系,再接着去学习一级指针、二级指针、多级指针,甚至于指针数组、数组指针,最后才能有基础去学习更加复杂难懂的函数指针、指针函数。


一、 指针细节归纳

  1. 指针是一种变量,会占用4个字节的内存空间,空间存放的是其他内存空间的地址

  2. *ptr操作的是内存空间。申明时,*表示申明的变量是指针;使用时,*表示使用的是指针所指的空间的值;*ptr=表示给内存赋值->内存写入,=*ptr表示从内存读取数据

  3. 牢记指针变量不等于指针所指向的内存块,如图所示:在这里插入图片描述

  4. 注意:指针指向谁,就把谁的地址给指针,不停的给指针赋值就是不停地改变指针指向(此时并没有给指针赋值,所以和对应的内存空间没有关系)

  5. 间接赋值是指针存在的最大的意义。一般而言:常用高级指针来更改低一级指针的值。比如:int a; int* ptr1; int** ptr2;(函数调用时,用实参取地址传给形参,形参运算结束后把值传给实参。)

  6. 指针必须与内存联系起来学习、思考。主调函数可以把堆区、栈区、全局区地内存地址传给被调用函数地形参==是输入形参,被调用函数只能返回栈区、全局区数据(因为被调用函数一旦执行完毕就被析构了),被调用函数地形参运算后赋给实参地地址==输出形参

小记

更新于2020.10.28

二、一级指针&一维数组

1、一级指针

指针变量的本质是存放内存地址的变量,而我们通常看到的变量 例如:int a=10,这里的a其实就是一块四字节的内存块的别名。

2、一维数组

一维数组在内存中就是一串连续的内存块,数组名就是其内存首地址,可以通过它随机遍历每个元素,甚至每个字节的内容

3、两者的联系

指针和数组有着天然的对应关系。具体的关系见下图代码所示:

int *ptr=NULL;
int num[5]={1,2,3,4,5};
ptr=#//此时,记住ptr本质是指针,但却可以用数组的方式来使用。
//比如:ptr+3,ptr++,随机访问数组内容。

4、强调的点——指针++、–的偏移量

指针自加
注意一点即可:字节是内存的最小单元,但是类型决定一切。换句话说:指针是什么类型,++或者–就偏移这种类型的字节长度

小记 更新于2021.11.24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值