我们有一个包含很多文件的 c 程序,我们想知道一件事。
我们正在用 C51 编译它。
如果,假设在其中一个文件中,我声明了一些变量,例如:
unsigned char xdata a;
unsigned char xdata b;
...
//etc
unsigned char xdata z;
他们的地址会以相同的顺序递增吗?正如他们宣布的那样?
我意识到递增地址可以使用数组或结构来实现,或者我可以分配选择的固定地址,但这不是问题所在。
最佳答案
Will their addresses be incrementing and in the same order? as they are declared?
不,您不能知道或假设任何关于此的事情。它们可以在堆栈上或寄存器中以任何顺序分配,或者根本不分配。只有在声明数组和结构时才能保证分配顺序。
此外,您不能对数组以外的任何对象使用指针运算,否则您可能会遇到各种微妙的未定义行为错误。
关于c - 如果按顺序声明可分割变量,它们的地址是否递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410541/