C语言运算符标签操作

指针运算符加减标签操作

指针作为一种特殊的变量,它的运算和普通变量是有一定区别的。指针在运算中并没有具备其它变量所有的性能。我们只是给大家介绍一些指针常用的运算:

加法运算(+,++)

我们知道一个整型的变量可以为它做加法运算,那么指针变量加1之后是一个地址还是一个整型?

int *p=xxx; [0x12] //有一个int类型的指针,它的指针变量存储的地址为0x12。
p=p+1;

由于p是指针变量,而1是整型变量,加法操作会将指针优先级作为最高优先级。我们不会得到0x13这个值,而是0x12+1*(sizeof(*p)),它这里不是将指针向下挪动一个字节,而是一个int类型的字节,也就是四个字节。所以指针的加法操作是对移动单位的加法,单位的大小是指针类型的大小。

减法操作(-,--)

减法操作和加法操作是一样的,只是指针移动的方向不一样,但是它们都是针对指针类型这个单位来移动的。

下标运算符[]

[n],n被称为标签,这种访问方式就是地址内容的标签访问方式。我们有时候也许并不希望按照加法操作来依次的读取内存空间,而希望一个跳跃式的读取。C帮我们在内存中做了一个标记,它将指针指向的内存地址标记为0,然后按照一个单位的大小向下移动,依次标号。我们就可以通过p[2]直接访问那一个内存地址。实际上p+n只是将指针向后移动,是对指针变量的地址进行操作。而p[n]是移动了之后还可以直接对内容进行操作。*(p+n)=p[n];

嵌入式学习之C语言运算符标签操作相关推荐

  1. 【算术、关系、逻辑、位、复合赋值、带副作用的、自增、自减、其它】运算符(学习笔记4--C语言运算符)

    前言: 如果你正在学习C语言而又不知道从何处开始学,你可以跟着我一起学习C语言,在寒假期间我每天都会发一篇博客,里面有各种C语言的知识点,如果你想学习下去,想进步,就来每天跟着我一起打卡吧,期待我们能 ...

  2. C语言嵌入式系统编程修炼之道——屏幕操作篇

    C语言嵌入式系统编程修炼之道--屏幕操作篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 1.汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非 ...

  3. c语言运算符ppt,C语言知识学习运算符.ppt

    C语言知识学习运算符.ppt 第三章,C语言运算符,回顾,变量和常量的含义 熟悉基本数据类型 - int.char.float 和 double 使用算术运算符 理解类型转换 熟练使用 scanf 和 ...

  4. c语言运算符感想,C语言运算符学习笔记

    运算符不仅具有不同的优先级,还有不同的结合性.在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算. C语言的 ...

  5. Linux嵌入式学习---c语言之循环结构

    Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...

  6. Linux嵌入式学习---C语言之数据类型及运算

    Linux嵌入式学习---C语言之数据类型及运算 一.Linux下c语言概述 1.1C语言特点 1.2c语言是结构化的语言 1.3c是模块化的语言 1.4程序可移植性好 1.5c语言运算符丰富,代码效 ...

  7. Linux嵌入式学习——c语言选择结构设计

    Linux嵌入式学习--c语言选择结构设计 一.if语句 1.1if语句的一般格式 1.2if语句常用的3种形式 1.3if语句的嵌套 二.关系运算符和关系表达式 2.1关系运算符及其优先次序 2.2 ...

  8. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  9. Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型、符号、运算符、数组Array总结之详细攻略

    Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组Array总结之详细攻略 目录 Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组总 ...

最新文章

  1. GitHub 热榜:中国博士开发可交互全球疫情地图,登上柳叶刀!
  2. pandas创建时间序列仿真数据并过滤(filter)时间数据:头尾数据、某年的数据、某年某月的数据、某年某月某日的数据、某个时间范围内的数据、truncate函数查看特定时间之前护着之后的数据
  3. 浅释一下,为什么要使用接口?
  4. Python: 50个能够满足所有需要的模块
  5. c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode...
  6. Youtube Links
  7. nginx的学习笔记,第四记。
  8. 4.1 手工编写第一个性能测试脚本
  9. 聚类之详解FCM算法原理及应用
  10. linux命令高亮显示,linux命令行高亮显示
  11. Win10应用设计的那些事儿
  12. window7电脑声音图标不见了
  13. sqlserver清除换行符和回车符\r\n
  14. 慕课网 前端JS面试技巧 笔记
  15. vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器
  16. Jaeger-分布式调用链跟踪系统理论与实战
  17. 酒店管理系统/基于ssm的酒店管理系统/基于javaweb的酒店管理系统的设计与实现
  18. 为啥小扎一直醉心于元宇宙的布局?
  19. 烽火SDN交换机通过国际权威组织认证
  20. linux文件系统数据恢复

热门文章

  1. POI导出excel因为格式问题无法打开文件
  2. POI(HSSF)生成的excel文档,excel显示“文件已损坏,无法打开“解决方法
  3. 机器学习 线性回归 头歌实训
  4. 阻塞和挂起的区别和联系
  5. 李明老师关于说话人识别和语种识别的总结
  6. 什么是final、static和static final?
  7. W25Q128FW  W25Q128FV  W25Q128JV  W25Q64JV 的区别
  8. 百度ERNIE,中文任务全面超越BERT
  9. 企业大数据平台下数仓建设思路
  10. 周易卦爻解读笔记——泰卦