linux c语言变量地址类型,C语言基础知识:访问内存地址的方法
汇编语言寄存器间接寻址方法
#define GPJ0CON0xE0200240
ldr r0, =GPJ0CON //把地址值赋给寄存器r0,从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断这个数
ldr r1, =0x11111111 //将设定的数暂存到寄存器r1中
str r1, [r0] //寄存器间接寻址。功能是把r1中的数写入到r0中的数为地址的内存中去
ldr(load register)指令将内存内容加载入通用寄存器。
str(store register)指令将寄存器内容存入内存空间中。
ldr/str组合用来实现 ARM CPU和内存数据交换
C语言中访问内存地址的方法
1)用指针间接访问内存
C语言中访问内存地址的方法如下片段。在ARM中(统一编址),寄存器的地址类似于内存地址(IO与内存统一编址的),所以 这里的问题是用C语言读写寄存器,就是用C语言来读写内存地址。用C语言来访问内存,就要用到指针
#define GPJ0CON0xE0200240
unsigned int *p = (unsigned int *)GPJ0CON; //注意ARM中常用无符号整型指针,(unsigned int *)是强制类型转换,让等号两边类型匹配
*p = 0x11111111; //解引用,间接改变GPJ0CON地址中存的数
可以看出,C语言间接访问内存地址的方式是通过指针间接访问。
2)C语言通过(变量名)直接内存
假如定义了一个int a;那么直接给变量名赋值a = 5; 这样的方式就直接访问量内存地址
int a; /* 编译器帮我们申请了1个int类型的内存格子(长度是4字节,地址是确定的,但是只有
编译器知道,我们是不知道的,也不需要知道。),并且把符号a和这个格子绑定。*/
a = 5; // 编译器发现我们要给a赋值,就会把这个值5丢到符号a绑定的那个内存格子中。
【扩展】C语言中函数:一段代码的封装。
函数名的实质:就是这一段代码的首地址。所以说函数名的本质也是一个内存地址。
【注意】内存单元格子的编址单位是字节。
linux c语言变量地址类型,C语言基础知识:访问内存地址的方法相关推荐
- c语言 地址类型,C语言中的地址类型
第!!卷!第"期 #$%&!!!'$&" ! ! ! ! ! 平!原!大!学!学!报 ()*+',-)./0'12*,'*'0#3+4052 ! ! ! ! !66 ...
- c语言中时间类型的变量,C语言变量的类型
C语言变量的类型 变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值.不同类型的变量其存储单元的大小不同,变量在使用前必须定义.那么C语言变量的类型有哪些呢,一起来看看! (一) ...
- python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...
Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...
- 动态语言,静态类型,强类型定义语言,弱类型定义语言,
1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言. 1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...
- 编译型和解释型、动态语言和静态语言、强类型定义语言和弱类型定义语言
一.编译型与解释型语言 我们编写程序也就是源代码基本是用高级编程语言,比如JavaScript, java, c等等,这些语言计算机是不理解的,所以需要转化(翻译)成计算机理解的机器语言,或者说目标C ...
- c语言中通过指针将数值赋值到制定内存地址
1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质 ...
- java 怎么输出地址,Java中char[]输出不是内存地址的原因详解
前言 Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean. 计算机中的基础数据单位是bit, 1byte=8bit. 数据类型 ...
- Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介
原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...
- linux内核中的文件描述符(一)--基础知识简介
linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...
最新文章
- 某程序员吐槽:太尴尬!四年不见的前女友来公司面试,自己还是面试官!
- 通过一个函数对比 mgrid以及meshgrid函数
- 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的...
- 青龙依赖环境一键安装部署
- vue项目实现记住密码到cookie功能
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
- 服务器损坏mysql修复_云服务器mysql数据库损坏修复mysql
- 因吵架总被骂,阿里程序猿一气之下发明“情侣吵架神器”
- 2020年短视频用户价值研究报告
- 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
- 关于索爱MT15i连接win7——MTP USB驱动无法安装
- 转-Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
- wordpress导入数据错误MySQL返回:#1273 – Unknown collation:’utf8mb4_unicode_ci’
- 金融支付-银联卡支付系统产品介绍
- 正则表达式前端使用手册
- cgb2105-day02
- 产品经理需要的文档汇总
- Python关于生日悖论分析
- Win7+Win8双系统安装教程!零风险超简单2
- Mysql语句+Linux指令一步入门
热门文章
- 《Linux设备驱动开发详解》学习笔记一
- 最简单上手的音频处理软件Cool Edit,这些操作你该知道
- java eml解析_javamail 收邮件 解析eml文件
- 详解Python中的算术乘法、数组乘法与矩阵乘法
- 关于举办“全国大学生大数据技能竞赛”的通知
- Python使用numpy计算矩阵特征值、特征向量与逆矩阵
- python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...
- C++ 面向对象与面向过程的区别与联系
- 各种水龙头拆卸图解_[各种水龙头拆卸图解]水龙头漏水怎么办
- java transient关键字_嗯?你真的会用 Java 序列化机制?