我对指针的概念有些困惑,其中之一就是:
假设我们声明了一个整型变量n和一个指向它的指针*p。
现在,如果我没记错的话,
所以,
我的疑问是,如果我们像这样做:
变量是否移动到内存位置“5”(很可能不是),或者指针是否只是转换成一个“int”,并被赋值为5?我本来想自己尝试一下,但玩弄系统内存让我有所顾虑。
此外,在我们声明任何变量(比如2个字节大小的整型变量)时,它是否存储在随机内存位置,比如3000、101、2700之类,还是存储在0、2、4等位置?接下来声明的变量是否直接存储在相邻位置(比如3002、103或2702),还是在它们之间存在某种间隔?
假设我们声明了一个整型变量n和一个指向它的指针*p。
int n=23,*p;
现在,如果我没记错的话,
p=&n;
将变量n的地址(比如3000)赋给指针p。所以,
cout<<p<<" "<<*p;
会依次输出3000和23。我的疑问是,如果我们像这样做:
p=5;
即把一个用于存储内存位置的变量赋予一个数值,会发生什么?变量是否移动到内存位置“5”(很可能不是),或者指针是否只是转换成一个“int”,并被赋值为5?我本来想自己尝试一下,但玩弄系统内存让我有所顾虑。
此外,在我们声明任何变量(比如2个字节大小的整型变量)时,它是否存储在随机内存位置,比如3000、101、2700之类,还是存储在0、2、4等位置?接下来声明的变量是否直接存储在相邻位置(比如3002、103或2702),还是在它们之间存在某种间隔?
p = (int*)5;
。 - alexeykuzmin0intptr_t
是适当的标准类型。 - NathanOliver