c - 如果按顺序声明可分割变量,它们的地址是否会递增
问题描述
我们有很多文件的 ac 程序,我们想知道一件具体的事情。
我们正在用 C51 编译它。
如果,假设在其中一个文件中,我声明了一些变量,例如:
unsigned char xdata a;
unsigned char xdata b;
...
//etc
unsigned char xdata z;
他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?
我意识到可以使用数组或结构来增加地址,或者我可以分配选择的固定地址,但这不是问题。
解决方案
他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?
不,你不能知道或假设任何事情。它们可以按任何顺序在堆栈上或寄存器中分配,或者根本不分配。只有在声明数组和结构时才能保证分配顺序。
此外,您不能对任何不是数组的东西使用指针算术,否则您可能会遇到各种微妙的未定义行为错误。
推荐阅读
- javascript - 循环遍历对象数组,根据日期是否在当前月份进行过滤
- python - 一起使用加密和股票 OHLCV 数据。如何处理非交易缺口以避免指数和指标问题?
- java - 在字符串中搜索字符串但单词混乱
- javascript - 反应点击事件不冒泡
- scala - 如何在 Spark 中有效地选择包含某个值的数据框列?
- angular - 将两个 observables 合并为一个新的 observables
- c - 如何修复分配从指针目标类型 [-Wdiscarded-qualifiers] 错误中丢弃“const”限定符
- javascript - 如何在 package.json 中安装库的分叉版本
- swift - 我的地图视图隐藏了很多注释点,我如何强制所有点显示?
- mongodb - 通过具有顺序磁盘访问的 spark mongo 连接器读取完整集合?