嵌入式学习之C语言运算符标签操作
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语言运算符标签操作相关推荐
- 【算术、关系、逻辑、位、复合赋值、带副作用的、自增、自减、其它】运算符(学习笔记4--C语言运算符)
前言: 如果你正在学习C语言而又不知道从何处开始学,你可以跟着我一起学习C语言,在寒假期间我每天都会发一篇博客,里面有各种C语言的知识点,如果你想学习下去,想进步,就来每天跟着我一起打卡吧,期待我们能 ...
- C语言嵌入式系统编程修炼之道——屏幕操作篇
C语言嵌入式系统编程修炼之道--屏幕操作篇 作者:宋宝华 e-mail:[email]21cnbao@21cn.com[/email] 1.汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非 ...
- c语言运算符ppt,C语言知识学习运算符.ppt
C语言知识学习运算符.ppt 第三章,C语言运算符,回顾,变量和常量的含义 熟悉基本数据类型 - int.char.float 和 double 使用算术运算符 理解类型转换 熟练使用 scanf 和 ...
- c语言运算符感想,C语言运算符学习笔记
运算符不仅具有不同的优先级,还有不同的结合性.在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算. C语言的 ...
- Linux嵌入式学习---c语言之循环结构
Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...
- Linux嵌入式学习---C语言之数据类型及运算
Linux嵌入式学习---C语言之数据类型及运算 一.Linux下c语言概述 1.1C语言特点 1.2c语言是结构化的语言 1.3c是模块化的语言 1.4程序可移植性好 1.5c语言运算符丰富,代码效 ...
- Linux嵌入式学习——c语言选择结构设计
Linux嵌入式学习--c语言选择结构设计 一.if语句 1.1if语句的一般格式 1.2if语句常用的3种形式 1.3if语句的嵌套 二.关系运算符和关系表达式 2.1关系运算符及其优先次序 2.2 ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型、符号、运算符、数组Array总结之详细攻略
Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组Array总结之详细攻略 目录 Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组总 ...
最新文章
- GitHub 热榜:中国博士开发可交互全球疫情地图,登上柳叶刀!
- pandas创建时间序列仿真数据并过滤(filter)时间数据:头尾数据、某年的数据、某年某月的数据、某年某月某日的数据、某个时间范围内的数据、truncate函数查看特定时间之前护着之后的数据
- 浅释一下,为什么要使用接口?
- Python: 50个能够满足所有需要的模块
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode...
- Youtube Links
- nginx的学习笔记,第四记。
- 4.1 手工编写第一个性能测试脚本
- 聚类之详解FCM算法原理及应用
- linux命令高亮显示,linux命令行高亮显示
- Win10应用设计的那些事儿
- window7电脑声音图标不见了
- sqlserver清除换行符和回车符\r\n
- 慕课网 前端JS面试技巧 笔记
- vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器
- Jaeger-分布式调用链跟踪系统理论与实战
- 酒店管理系统/基于ssm的酒店管理系统/基于javaweb的酒店管理系统的设计与实现
- 为啥小扎一直醉心于元宇宙的布局?
- 烽火SDN交换机通过国际权威组织认证
- linux文件系统数据恢复