将自己的地址放入变量中
Putting own address in variable
int main()
{
int x;
x = int(&x);
int* q;
q = &x;
int* p;
p = (int*)&x;
int* w;
w = (int*)x;
cout << *p << endl << x << endl << *q << endl << *w << endl << p << endl << q << endl << w << endl << &x;
return 0;
}
输出:
5762632
此步骤
x = int(&x)
有效吗?这在概念上有什么错误吗?如何可视化/解释当我们写
p = (int*)&x
和w = (int*)x
时发生的事情?
请注意,此程序仅在写入步骤1时执行。如果x
不包含自己的地址,则程序将显示错误。
这个步骤x=int(&x)有效吗
这在概念上有什么错误吗?
该语句可能有效,并可能引发未定义的行为。一切都取决于平台。
在我合作过的许多平台上,地址从未签名。它们总是unsigned
,因为需要符号位来表示地址的整个范围。换句话说,我建议:unsigned int x=(unsigned整型)&x;
同样,它是关于符号位和地址的表示方式。
如何可视化/解释当我们写p=(int*)&x和w=(int*)x?
如果您想打印地址,我建议您使用指针格式:
cout << ((void *) &x) << endl;
或
printf("%pn", &x);
我建议使用调试器,而不是打印地址。调试器允许您检查指针中的值。但有时打印信息是一种更好的方法(比如处理多个任务或多个处理器时)。
相关文章:
- 在自己的初始值设定项中使用变量
- 如何从公共变量自己的类成员函数中访问它们?(C++)
- make 方法不更改自己的类变量而不使它们常量
- 用作自己的初始值设定项的未初始化变量的行为是什么?
- javascript中的静态私有变量用于自己的库
- 读取和分析文件,将解析的字符串的每个部分分配给其自己的变量
- 编写我自己的C++编译器. 卡在变量上
- 将自己的地址放入变量中
- 如何强制 gcc 查找自己的 c++ 头文件,而不覆盖 CXX 变量
- 通过自己的条件变量 c++ 控制每个线程
- 如何编写将"Know"自己的变量名的类
- "auto" lambda 中在其自己的初始值设定项中使用的变量
- 类的继承变量和自己的变量之间的差异
- 每个文件都有自己的静态变量副本吗?
- 递归成员函数无法访问自己的变量
- 将我自己的get/set c++成员函数视为SWIG中的成员变量
- 构建我自己的LPARAM变量
- #ifndef如何处理全局声明的变量和我自己的变量
- 将临时变量写入自己的新变量是不是更好?
- 如何使子进程具有与 parrent 相同的环境变量,并在窗口中拥有自己的环境变量?