我的编译器是 g++ 4.7.3
long i = 2222;
const long& lref = i;
const int& iref = i;
printf("i=%p lref=%p iref=%p \n", &i , &lref, &iref);
结果是
i=0xbfd78760 lref=0xbfd78760 iref=0xbfd78764
为什么地址iref
高于i
我认为它可能只是这样:当const int&
引用 时long
,它就像
int temp = i
const int& iref = temp;
==================================================== ========
代码2
但是,当代码喜欢
long i = 2222;
const long& lref = i;
const int& iref = i;
int a = 10;
int b = 10;
printf("i=%p lref=%p iref=%p a=%p b=%p\n", &i , &lref, &iref, &a, &b);
结果是
i=0xbfade768 lref=0xbfade768 iref=0xbfade774 a=0xbfade76c b=0xbfade770
为什么a
and的地址b
低于iref
栈中的地址?
==================================================== ========
代码3
当代码喜欢
long i = 2222;
const long& lref = i;
const int& iref = i;
printf("i=%p lref=%p iref=%p \n", &i , &lref, &iref);
结果是
i=0xbfbe3f84 lref=0xbfbe3f84 iref=0xbfbe3f83
当类型iref
是char
时,为什么地址iref
低于i
?
谁能告诉我为什么,谢谢!