首页 > 解决方案 > 如果按顺序声明可分割变量,它们的地址是否会递增

问题描述

我们有很多文件的 ac 程序,我们想知道一件具体的事情。

我们正在用 C51 编译它。

如果,假设在其中一个文件中,我声明了一些变量,例如:

unsigned char xdata a;
unsigned char xdata b;
...
//etc
unsigned char xdata z;

他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?

我意识到可以使用数组或结构来增加地址,或者我可以分配选择的固定地址,但这不是问题。

标签: cmemory-managementkeilc51

解决方案


他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?

不,你不能知道或假设任何事情。它们可以按任何顺序在堆栈上或寄存器中分配,或者根本不分配。只有在声明数组和结构时才能保证分配顺序。

此外,您不能对任何不是数组的东西使用指针算术,否则您可能会遇到各种微妙的未定义行为错误。


推荐阅读