为什么我们不能为指针赋值
Why we can't assign value to pointer
内存地址通常以十六进制格式显示,如0x7ffff3a9ae94
。为什么不能直接将这些值赋给指针?
int *ptr=7ffff3a9ae94;
当我尝试这个时,显示了一个"类似"的行为。(这可能是一个单独的问题)
int i=0;
*ptr=&i;
&i=ptr;
两种情况都显示g++ 4.7.2
上的语法错误,我认为这意味着它是语言限制。
为什么这个限制在c++中实现?
或者这是某种操作系统的限制?
注意:这个问题有类似的标题,但它没有提供我的问题的答案。
没有这样的规则,这:
int *ptr=(int*)0x7ffff3a9ae94;
运行良好。尽管……是件坏事。
一个有趣的事实:你可以将指针转换为整数,反之亦然,这是在c++中谈论垃圾收集器时最大的障碍之一。您可以(尽管这很愚蠢)在某个外部缓冲区中序列化内存地址,然后将其重新分配给某个指针。GC可能认为它可以删除变量,因为现在没有其他人指向它——而指针仍然是"有效的",并且将在将来的某个地方被解引用
相关文章:
- 错误:在为指针赋值时,void值没有被忽略
- 关于 c++ 函数中指针赋值的简单问题
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 为什么通过指针赋值常量没有效果?
- 复制构造函数中的指针赋值
- C++ 指针赋值运算符重载(不仅是对象赋值,还有指针赋值)
- 从字符串数组打印其中一个字符串时出现空指针赋值错误
- 为字符串指针赋值
- 动态指针赋值c++
- std::wstring指针赋值C++
- C++匿名结构指针赋值
- 为指针赋值而不赋值
- 此指针赋值应生成段错误
- 指向指针赋值的指针
- 哪个指针赋值更好(C++)
- <T>unique_ptr.get() 方法在使用原始指针赋值时调用析构函数?
- 为用soap_alloc创建的std::string指针赋值
- 为什么函数头的更改会导致指针赋值不起作用
- 64位c++指针赋值
- 在函数中将指针赋值到不同的地址