在刚开始接触的时候,我完全不怎么懂这两个运算符如何去用它,什么时候用,什么时候不用,我就只知道它的一些具体概念,并不懂如何去运用这两个运算符,经过几天的学习后,才懂的怎么去用这两个运算符。
(1)& 运算符 :用于取一个对象的地址
(2)* 运算符:作用于指针时表示访问指针所指向的对象
如下图:

它运行结果为:
a20
&a0093F968
b0093F968
*b20
这个时候,看结果我们就会发现为什么&a与b为啥不一样的。
原因:
变量a 本质上代表一个存储单元。
处理器通过该存储单元的地址来进行访问到该存储单元中的数据。
因此a本来代表两个值:存储单元的地址和储单元中的数据。
C语言中a表示存储单元中的数据,&a表示存储单元的地址。
如下图:我们可以发现a本身值是20,但是a在内存中的地址值为0093F968,也就是&a,我们将&a赋给
b,这时候我们就只是将地址值赋给b并没有将值赋给b,这时候存储单元的地址值拿到了,我们再通过存储单元的地址值来查找相关的存储单元中的数据。(要求对应的存储单元中存储的是另一个存储单元的地址)

那我们这时候该如何去理解a、&a、a:
1.理解它们的根本的含义
a:表示对应的存储单元中的数据。
&a:表示对应的存储单元的地址。
a:表示要求a对应的存储单元中的数据一定是另一个存储单元的地址。
这样,
a才能表示另一个存储单元中的数据。
2.根据声明的数据类型来判断a存储的是存储单元的数据值,还是地址值
当我们声明a的类型为int数据类型时,a存储的则是一个整数数值,通过a可以访问(读取或修改)这个数值。
当我们声明a的类型为int
数据类型时,a存储的是一个存储单元的地址,而该存储单元中的数据是一个整数数值;通过a我们可以访问(读取或修改)这个数值。
当我们声明a的类型是int数据类型时,a中存储的是一个存储单元的地址,而该存储单元中存储的数据是另外一个存储单元的地址,另外这个存储单元中存储的是一个整数数值;通过a我们可以访问(读取或修改)这个数值。
需要注意的是,我们的指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型,除了void类型的指针。
“” 有三个作用:
1.乘法
2.定义指针变量
3.取得指针所指向的内存中存储单元的数据值,当指针指向另一个内存中存储单元的地址时,那就是另一个的内存中存储单元的数据值。
C语言中取值符(*)与取地址符(&)的区别:
(1)两者根本意义不同。是指针的意思,而&是取地址的意思,这两个相辅相成。
(2)语言规则不同,变量类型加
就是一个指向该变量类型的指针,通俗点说,指针就是可以通过地址修改和获取该变量的值,而&符号只是获取该变量的地址!
(3)取地址符&,对任意变量都可以进行取地址操作;*是取指针目标运算符,其后跟随的必须是指针类变量。
注意的是:&后只能跟变量,不能跟常量,因为常量是一个立即数,它不是个容器,所以没有地址。
如下图:

“&”和“ * ”这两个运算符优先级别是相同,按从右向左的方向结合。因此“&a”先进行“ * ”运算,变量a再进行“&”运算,“&a”取变量a存储单元中的地址。“&a”先进行“&”运算,“&a”就是取变量a的地址,然后执行运算,“&a”就是取变量a存储单元中所在地址的值,实际就是变量a。
综上,&是取变量或指针自身的地址;*是取指针中指向地址内的数据;什么都不加,就是取该变量或指针中当前存储的数据。

C语言中取值符(*)与取地址符()相关推荐

  1. Session存值取值问题及取不到值的问题

    Session存值取值问题及取不到值的问题 一.存值(相当于map) request.getSession().setAttribute("key", value); 二.取值 r ...

  2. sql-case when 条件1 then 取值1 when 条件2 then 取值2 else 取值3 end

    遇到 XXX情况 就 XXX 遇不到就 XXX 结束 case when -- then -- else -- end 例如一个3条件取值的字段: case when 条件1 then 取值1 whe ...

  3. jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中

    例:将多个选中的checkbox的值组装成一个字符串 <script type=text/javascript> function addMem(){ //var followers = ...

  4. jquery radio取值,checkbox取值,select取值,radio选中,

    jquery radio取值,checkbox取值,select取值,radio选中, var item = $('input[@name=items][@checked]').val(); 获取se ...

  5. c语言二进制负数的除法,C语言中负数除法与右移取整问题

    今天碰到了负数除法与右移的替代问题,借机研究一下C语言中负数除法的问题.此处只讨论整数除2的幂次方的情况,并取-7~-5除以4为例,不讨论一般除法的移位优化. 1.     负数右移 对于有符号整数, ...

  6. thymeleaf 获取yml中的值_Thymeleaf前后端传值 页面取值与js取值

    目的: 后端通过Model传值到前端 页面通过Model取值显示 js通过Model取值作为变量使用 1.后台Controller @GetMapping("/message") ...

  7. asin c语言中 返回值范围_大学C语言考试易错知识点总结

    作者:cggwz 来源:https://blog.csdn.net/cggwz/article/details/103740713?utm_medium=distribute.pc_relevant. ...

  8. php兴趣爱好复选框如何取值,php checkbox 取值详细说明

    php checkbox 取值详细说明 发布于 2014-12-12 18:18:58 | 176 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  9. c语言中初始值的作用,初始C语言学习

    一.我的第一个C语言程序 #include int main() { printf("Hello C语言!\n"); printf("Hello Word!\n" ...

  10. c语言中的值传递和地址传递参数,c语言值传递,地址传递,引用传递

     c语言值传递,地址传递,引用传递 总结:对于函数来说,值传递就是一个人来了,给你一些数 据,你对数据处理.地址传递就是你通过地址找到一个人,然后直接对这个人处理.而引用传递就是你要直接对一个人进行处 ...

最新文章

  1. 复解析蕴含不可延拓性
  2. Spring 定时器
  3. 左神算法:环形单链表的约瑟夫问题(Java版)
  4. android搭建https,android 搭建https Server(示例代码)
  5. (转)NSIS使用心得
  6. DM8168 TILER(3)
  7. Android 数据库综述(一) 数据库片的升级与数据的迁移操作
  8. 《C++编程风格(修订版)》——3.2 继承作用域准则
  9. 如何脱离tutorial使用igllib
  10. SqlTransaction事务和Response.Redirect
  11. spec.fne病毒
  12. Spring的IOC和AOP原理及其使用
  13. 彩信文件服务器,彩信服务器怎么设置
  14. 遥感方向SCI期刊整理
  15. Android java.lang.NoSuchMethodError: No virtual method ;or its super classes (declaration of
  16. 钉钉、企业微信平台发送工资条程序--燕春科技工资条管理系统2.0
  17. Spring Boot当中获取request的三种方式
  18. 合肥市专精特新中小企业申报汇总,申报奖励、认定条件、材料流程时间
  19. 蓝宝石超频软件测试,帧数提高60% 蓝宝石黑科技TRiXX Boost
  20. 【ZOJ - 2116】Christopher's Christmas Letter(Lucas)

热门文章

  1. html看汉字选拼音小游戏
  2. n元一次不定方程 模板
  3. ps 填充颜色快捷键
  4. 北京大学肖臻老师《区块链技术与应用》公开课-ETH
  5. 愚人节就是要搞怪!微信公众号图文应该这样排版!
  6. html5页面头部代码,HTML5标签:header元素的使用方法及作用
  7. python pandas按照行数切分文件
  8. OKR最新模板推荐,生产研发团队如何使用OKR工具?
  9. esxi7.0 打包网卡驱动
  10. 密西根州立大学计算机qs分数,密歇根州立大学有哪些专业_专业排名(QS世界排名)...