变量的地址是不是一个接一个声明,一个接一个

Do the addresses of variables, declared just after each other, precede each other?

本文关键字:一个 声明 是不是 地址 变量      更新时间:2023-10-16

我正在学习c++指针,我有以下问题:

当我像这样声明三个变量时:

int a = 0, b = 1, c = 2;

是否有变量的地址在彼此之前…例如当a的地址结束时,b的地址是否立即开始?

另外,请给我提供一些教程或书籍的链接,这样我就可以了解计算机如何使用内存(位,字节…),因为我不太了解计算机,变量和数据是如何工作的,我不能在任何地方找到有用的链接。

提前感谢:)

这取决于编译器如何为变量分配地址。

在你的例子中,地址可能是顺序的,也可能不是。

您可以简单地从代码中验证如下:

#include"iostream"
using namespace std;
int main()
{
    int a = 0, b = 1, c = 2;
    cout<<"Address of A : "<<&a<<endl<<"Address of B : "<<&b<<endl<<"Address of C : "<<&c<<endl;
    return 0;
}

因此,如果你需要处理变量的地址,总是使用该类型的指针,然后使用指针访问或更改变量。

的例子:

int *p_a = &a;
int *p_b = &b;
int *p_c = &c;

这取决于编译器。编译器根据方法的其余部分重新排列它们可能会更好。

不管怎样,为什么要担心?