初始化指针而不给出地址
initialising a pointer without giving an address
我想知道下面的语句无效,
int* p;
*p = 3;
但下面的声明是
int* p; int a;
a = 9;
p = &a;
*p = 3;
为什么我不能在给*p一个地址之前给它一个值,而可以在分配地址之后给它。感谢
指针只是一种特殊类型的变量,它将内存地址作为其值。在初始化之前,它可能指向任何随机存储器地址。
取消引用指针(使用*p = 3
语法)是告诉计算机转到p
指向的内存地址,并将值3存储在该位置。
因此,很明显,如果没有有效的内存位置,这是有问题的。以下是通过分配获得有效内存地址的一种可能方法:
int *p = new int;
*p = 3;
第一行做两件事:1)在堆上为int分配内存,2)将指针p
的值设置为分配内存的地址。
如果没有初始化为指向地址,指针将包含一些垃圾地址,这就是您在第一个示例中尝试写入的地址。为了有效,指针引用您拥有的一些有效内存是至关重要的,这需要您将其设置为一个地址。
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 将地址分配给本地指针后,公共对象的变量将消失
- 为什么指针不写入类的地址?
- CUDA:统一内存和指针地址的更改
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 如何在程序集函数中将元素数组作为参数传递时转发 ARM 寄存器的地址指针
- 如何使用构造函数初始化内存地址(指针变量)?
- 数组基础地址指针
- 如何在不使用返回的情况下从函数获取变量的地址(指针)
- 保存QWidgets的地址/指针
- C++ 读取内存地址/指针和偏移量
- 从存储在 CTreeCtrl 的 LPARAM 中的结构中检索地址/指针 (IXMLDOMNode*) - 不起作用
- 简单的C++地址/指针澄清
- 如何获取成员函数的地址指针
- 当“按引用传递”成为强制传递而不是按地址/指针传递时
- C++ 为什么不是同一个地址(指针)