前言

众所周知,C语言是较为底层的语言,许多操作是直接对内存进行操作,既然谈到C语言,那就不得不说道C语言的独特之处——指针
针对int *p 进行讲解,当你能理解这3个后,指针就明白了

一、 变量存储过程及原理

1.赋值

结果是9

我们需要知道对于int a = 9;这句话,计算机做了什么?

定义a
int a,在内存中开辟了一个int大小的空间,也就是4个字节(32位),然后将这个空间分配给了a,这就是a的空间了

给a赋值
a = 9,在a的空间里存放9这个数,然后将十进制的9转换成二进制的9

这里存储数据的方式是大端模式,简单来说就是把数据的低字节保存在内存的高地址中,有兴趣的可以了解一下,这里不多赘述
可以看到00001001是我们存储进去的数值,根据大端模式,数据的低字节保存在内存的高地址中,所以就是上图的存储格式

2.外部手动赋值

scanf("%d",&a);
执行这行代码时,输入一个int型的数值,例如8,然后&a,即找到a的地址,将8转为二进制,存入到a的空间,这也是为什么需要加&
总结
一个变量的存储,首先是在内存开辟一个空间,然后把这个空间分配给某一变量,再对变量进行存储

二、 指针变量int *p

1.指针类型

指针类型int *p,虽然*p是写在一块的,但是变量名是p,类型是int *,也就是整形的指针类型,理清指针类型和变量后,其实已经差不多明白了


结果

可见变量p里存放的是a的地址

错误写法:

一个事指针类型,一个事int类型,是无法相互操作的(类型不匹配)

2.指针存储过程及原理

这一段代码看看计算机是如何运行的

  • 可以将int类型变量的地址赋给 int *指针类型变量
  • &是取地址符,&a就是拿到a的地址

总结:
总的来说,就是针对a的空间,给了p一把钥匙,让p也可以对a的那片空间进行操作

指针操作

结果

总结:
除了定义指针变量的时候,变量前面有*为定义类型
其他时候均为指针的取值操作,注意是取值不是取地址,拿的是指针变量中存放的值

个人理解,欢迎评论探讨!

【C语言】一文彻底理解指针,通俗易懂相关推荐

  1. c语言回文字符串用指针,C语言-判断回文字符串【函数+指针】(一)

    例题一: 6-1 判断回文字符串 (20 分) 本题要求编写函数,判断给定的一串字符是否为"回文".所谓"回文"是指顺读和倒读都一样的字符串.如"XY ...

  2. C语言重点——指针篇(一文让你完全搞懂指针)| 从内存理解指针 | 指针完全解析

    有干货.更有故事,微信搜索[编程指北]关注这个不一样的程序员,等你来撩~ 注:这篇文章好好看完一定会让你掌握好指针的本质 C语言最核心的知识就是指针,所以,这一篇的文章主题是「指针与内存模型」 说到指 ...

  3. 深入理解指针:一文让你彻底理解指针

    好多人都说指针很难,其实指针并不难,你不是不懂指针,你是不懂内存管理,搞懂内存管理,指针就是纸老虎 内存物理上的实现我们不用关心,这是硬件工程师需要关心的问题,作为软件工程师,我们只需要了解内存的抽象 ...

  4. 【C语言】深入浅出理解指针及内存与指针的关系(详细讲解+代码展示)

    目录 概述 内存 内存含义 内存作用: 物理存储器和存储地址空间 物理存储器:实际存在的具体存储器芯片. 存储地址空间:对存储器编码的范围. 内存地址 指针和指针变量 指针基础知识 指针变量的定义和使 ...

  5. c语言通过指针变量输出10个元素,C语言程序设计第2版指针程序设计(10页)-原创力文档...

    C 语言程序设计 - 理论方法与实践(第 2 版) 7.4.1 简单指针变量作函数参数 例 7-9 用比较交换法 ,将一维数组的最 大值移到数组的最 末元素位置,交换 过程用上述 swap() 函数实 ...

  6. 一文搞懂指针,指针的指针,悬浮指针,野指针

    一文搞懂指针,指针的指针,悬浮指针,野指针 学习C语言过程中,指针的概念往往是重难点,伴随着时隐时显的*,令人头晕.实际上指针并非如此复杂,掌握最基础概念,有利于我们更深刻的理解指针. [百科概念] ...

  7. c语言中指针往内存写值,C语言编程常见问题解答之指针和内存分配

    指针为C语言编程提供了强大的支持--如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断.一个很好地利用了指针的程序会非常高效.简洁和精致. 利用指针你可以将数据写入内 ...

  8. c语言形参指针 实参数组,《C语言程序设计》中的指针形参和函数体中数组实参问题的教学研究.pdf...

    <C语言程序设计>中的指针形参和函数体中数组实参问题的教学研究.pdf C C <CC语言程序设计>中的指针形参和函数体中数组实参问题的教学研究 山东理工大学计算机学院 董敬富 ...

  9. C语言 第八章 函数、指针与宏

    一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序 ...

最新文章

  1. 埃森哲报告:2017年数字化浪潮下的医疗行业五大趋势
  2. HCNA多区域OSPF配置
  3. STM32 基础系列教程 34 - Lwip_tcp_server
  4. 八中计算机是学啥的,北京八中:居然有这么好玩的课
  5. 数据科学家是个性感的工作?我信你个鬼!
  6. 7-71 爬动的蠕虫 (15 分)
  7. VMware esxi在线增加Linux LVM硬盘不需重新启动
  8. MES(制造企业生产过程执行管理系统)
  9. 详解大小额支付与超级网银
  10. 【读取GPS星历文件】读取GPS的星历文件,并动态显示卫星移动效果
  11. 字节跳动java面试题,附详细答案解析
  12. python二手房课程设计_基于python爬取链家二手房信息代码示例
  13. win10开热点后,手机连接显示IP配置失败(或显示正在连接中)
  14. 提供资产证券化投行业务的“点石金融”能在中国点石成金吗?
  15. Unity(OpenGL)实现“阴阳师画符”、划线功能
  16. 项目实战 - tpshop商城项目环境搭建
  17. 对象可以创建数组吗_企业微信活码如何创建?活码可以统计渠道来源吗?
  18. flac转换成mp3,4种方法教会你
  19. 如何将笔记本自带键盘禁止及回复
  20. 城市大脑建设的3个误区,大脑模型的分歧是关键

热门文章

  1. 【office2010】利用尾注添加参考文献
  2. [5-23]绿色精品软件每天更新[uc23整理]
  3. 前端js拼接Json串
  4. C++语言课程设计——超市商品管理系统
  5. 74ls163是同步清零吗_74LS163是具有同步清零功能的十六进制计数器,要
  6. java gette_Java setter,getter(滚压模具)
  7. TFTP协议解析及C/C++代码实现
  8. 笔记本电脑安装固态硬盘并重装win10系统
  9. InnoDB: Assertion failure in thread 140536591259392 in file page0zip.ic
  10. Oracle 企业管理器DataBase Control使用说明