C语言-指针到底是什么?
1、指针到底是什么?
(1)、指针变量与普通变量的区别
指针的实质就是一个变量,他跟普通变量没有任何本质区别。指针完整的名字应该叫做指针变量,简称为指针。
2、为什么需要指针?
(1)、指针的出现是为了实现间接访问。在汇编中都有间接访问,其实就是CPU的寻址方式中的间接寻址。
(2)、间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了
汇编之上的C语言也必须实现间接寻址。
(3)、高级语言Java/C#等没有指针,那么他们怎么实现间接访问?答案就是语言本身帮助我们封装好了。
3、指针使用三部曲:
定义指针变量(int *p)、
关联指针变量(p = &a // 让p指向变量a )(p = (int *)4 //让p指向内存地址为4的那个变量)
解引用(*p = 555;//把555放到p所指向的变量中)
(1)、当我们int *p;定义一个指针变量p时,因为p是局部变量,所以也遵循C语言局部变量的一般规律(定义局部
变量并且未初始化,则值是随机的),所以此时p变量中存储的是一个随机的数字。
(2)、此时如果我们解引用p,则相当于我们访问了以这个随机数字为地址的内存空间。那这个空间到底能不能访问
到就不知道了(可能行也可能不行),所以如果直接定义指针变量未绑定有效地址就去解引用的话,几乎会出现大的bug。
(3)、指针绑定的意义就在于:让指针指向一个可以访问、应该访问的地方,指针的解引用是为了间接访问目标变量。
4、*星号在用于指针相关功能的时候,有两种用法:
第一种:定义指针时,*结合前边的类型用于表明要定义的指针类型;
int *p; // *和int结合,表明p的类型是int *,也就是p指向int类型变量的指针。
第二种:用于指针解引用,解引用时*p表示p指向的变量本身。
int *p;
int a = 32;
p = &a; //这个地方就是第二种用法,这里不能写 *p = &a; 这样写的意思就是把a的地址给了p所指向的
那个变量(也就是地址为 内存中与p绑定在一起的那个内存空间里的数 的内存空间)。

C语言-指针到底是什么?的更多相关文章
- (转载)c语言指针学习
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- 2-Linux C语言指针与内存-学习笔记
Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 ...
- c语言指针学习【转】
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- C语言入门---第九章 C语言指针
没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...
- 闭嘴,给你一个数!1分钟,学完C语言指针,不扎手只扎心的针!
序言 指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎.辨别一个人C语言学的好赖就看他对指针的理解怎么样.指针内容也是工作面试经常问到的问题.本文将带你重新认识那个绊倒你的指针,以解 ...
- 难搞的C语言指针你搞懂了多少
C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...
- 最容易出错的C语言指针
C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...
- C语言指针转换为intptr_t类型
1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
随机推荐
- HDU 5504:GT and sequence
GT and sequence Accepts: 95 Submissions: 1467 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- Spring Boot2(005):关于代码结构
spring boot 对于工程代码结构并没有特殊得要求,但以下几个有用的最佳实践建议参考参考: 1.不鼓励而且应该避免使用 default 包 没有 package 声明的类被认为是在 defaul ...
- crmv2项目
maven -----------------------------------------------------------------------------感谢打赏!
- Oracle 查询当前用户下的所有表
select table_name from user_tables;
- 三十六、SAP的调试模式
一.在执行界面,输入/h, 左下角会提示调试模式被激活 二.点击运行,就会跳出调试界面 三.调试界面用法
- 在spark udf中读取hdfs上的文件
某些场景下,我们在写UDF实现业务逻辑时候,可能需要去读取某个文件. 我们可以将此文件上传个hdfs某个路径下,然后通过hdfs api读取该文件,但是需要注意: UDF中读取文件部分最好放在静态代码 ...
- 深度解析高分Essay写作组成部分
很多留学生在国外呆了好几个学期对于怎么写Essay还是不太了解,今天小编大致总结了以下一些技巧,相信同学们可以尝试着自己完成一篇Essay写作!一起来看看吧! 与你的导师沟通 你的导师对于你的Essa ...
- oracle获取排序第一的数据
一:按照某字段排序(时间,总数等),获取第一条 select a.* FROM ( select * from ( select t.*,row_number() over(partition by ...
- Linux命令笔记一
#查看文件大小[root@elegant-codes-3 py]# ls -lh total 1.1M -rw-r--r-- 1 root root 5.0K Feb 21 08:18 Crawl_W ...
- 图床工具PicGO实现七牛云图片上传
图床工具PicGO实现七牛云图片上传 我们在写博客或者网络文章时经常需要上传图片.目前最有名气的图床工具就是PicGO. 简单的界面,完整的功能,在相册里也能直接复制markdown图片链接.一直深受 ...