
c语言学习---指针
发布日期:2021-05-04 18:24:16
浏览次数:25
分类:精选文章
本文共 1255 字,大约阅读时间需要 4 分钟。
指针学习
一.指针的本质
- 指针的使用场景----传递和偏移
1.定义
-
左边是虚拟地址,都是???,没有给你用
-
把妹纸的地址存下来,就需要指针变量
-
CPU只能访问到字节,不能访问到位
-
int* p;
-
int *p,a; //p是指针变量,a是int型
-
指针变量是一种特殊的变量,只能存放地址
-
指针的本质就是为了实现间接访问.
-
取地址操作符&又称引用,获取一个变量的地址值
-
取值操作符*又称解引用,得到一个地址对应的数据
-
地址就是指针
二.指针的使用场景—传递和偏移
1.传递
- 函数的调用是值传递
2.偏移
- 对指针的加减,+就是向后偏移,指向下一个元素;同理-.
- 指针变量加1后,偏移的长度是其基类型的长度,就是偏移sizeof(int),这样通过*(p+1),就可以得到a[1]
- 数组名里存的就是指针
- *(p+2)=p[2]
3. 指针与自增自减运算符
- 在这里的a不能换成arr.因为数组定义时相当于arr已经和地址绑定了
- (),[]的优先级比后++高
4. 指针与一维数组
- 一维数组名中存储的就是数组的首地址
5.指针与动态内存申请
- size_t:字节
6. 字符指针和字符数组
- 字符串常量是放在数据区的常量区的,好处是相同的字符串只用存储一次,常量区的字符串不能修改
- 字符数组c在栈空间有10字节大小的空间
- p是一个指针变量,我们可以重新将一个地址赋给它
- 但数组名c本身存储的就是数组的首地址,相当于符号常量,因此不能给c重新赋地址
- 函数执行结束,栈空间会被释放,堆空间不会,堆空间要自己释放
- 返回值要和类型一致才行
- 野指针
- 分手过后,要彻底忘记NULL
7. const
- const char *ptr
- const放在前面,代表不能用ptr区修改它指向的空间的内容去
- char * const ptr 不能修改const指针,但可修改该指针的内容
8.memcpy函数与memmove函数的差异
三.数组指针和二维数组
- 数组指针还是指针,占4个字节(类别:整型指针,字符指针)
- 指针数组存放了四个指针元素,占16字节(类比一下:整型数组,字符型数组,指针数组)
- 任何数组名都是存了一个地址
- b[4],b是整型指针,&b是数组指针
- 二维数组数组名中存放的是数组指针,&b+1,偏移了一个数组长度
- 对整型指针取值得到整型1,2,3…
- 对数组指针取值得到数组a[1],a[2]…
- 一维数组a[1]是数组名,本身也是指针,可再次进行偏移
- 任何变量取地址+1,指向其所占空间的末尾
四.二级指针
- 二级指针指服务于一级指针
- 二级指针的偏移
- 服务于指针数组
- int a[5],整型数组,每个整型元素占4个字节
- int *p[5],指针数组,每个指针元素占sizeof(int *)*5=20个字节
- 场景:商品排序
- 指针数组是数组,只是其中存了5个指针
- 一维数组的数组名就是一级指针
- 让每个指针指向字符串常量区的每个字符串
- 放在下面是把 字符串常量区的每个字符串往栈空间copy
五.函数指针
- 函数名里存的就是函数入口地址
发表评论
最新留言
很好
[***.229.124.182]2025年03月14日 03时20分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 内部类 局部内部类 匿名内部类 成员内部类 静态内部类
2019-03-04
c# typeof
2019-03-04
c# lambda表达式 LINQ
2019-03-04
漏洞笔记
2019-03-04
搜集整理随机产生人的姓名的2种方法
2019-03-04
最简单的Socket程序[入门篇]
2019-03-04
C#实现的18位身份证号码最新算法[验证部分]
2019-03-04
VS2005图标默认存放位置
2019-03-04
常用正则表达式
2019-03-04
C#中换行的代码
2019-03-04
用正则表达式过滤多余空格
2019-03-04
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2019-03-04
C#:项目三 基金信息管理系统
2019-03-04
前后台互相调用Function
2019-03-04
U盘“无法识别的USB设备”解决办法
2019-03-04
1_3 MVP传统模式:view present model 比较MVVM
2019-03-04
1_4 组件的使用 component
2019-03-04
4-6 在Vue中使用插槽
2019-03-04
ECharts 使用手册 三步走
2019-03-04
一、 MySql 基础知识
2019-03-04