困惑:指向动态数组语法的指针
Confused: Pointers to Dynamic Arrays Syntax
int* p_bob = new int;
*p_bob = 78;
上面的代码对我来说很有意义。 我使用取消引用操作来分配新内存并分配值 78。
int* p_dynint = new int[10];
*p_dynint[2] = 12;
然而,这没有意义。 如果我尝试在 p_dynint[] 上使用取消引用运算符,则会出现错误。 为什么数组会有所不同?
*p_bob = 78;
这会将值78
分配给p_bob
指向的内存(表示int
)。
p_dynint[2] = 12;
只是访问第三个元素。
p_dynint[2]
实际上等同于*(p_dynint+2)
。
p_dynint[2]
等效于*(p_dynint + 2)
。去引用隐含在[]
运算符中。
这样做没有真正的问题:
int* p_dynint=new int[10];
//write first element
*p_dynint=10;
//write second element
*(p_dynint+1)=20;
//write three elements to std::cout
std::cout<<p_dynint[0]<<p_dynint[1]<<p_dynint[10]<<std::endl;
此示例还突出显示了数组的问题。你可以读写任何东西。p_dynint[10]
生成的输出是一个 int,但它的值只是接下来转换为 int 的几个字节。
如果可能,请使用容器(有关进一步推理,请阅读此内容)
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- QMetaObject invokeMethod的基于函数指针的语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 使用基类指针调用基类的值构造函数的语法是什么?
- C++语法差异:二维和一维数组(指针算术)
- C++中未命名函数指针的语法
- c++ 获取非语法使用"&"创建指针
- C++语法中的函数指针
- 存储函数指针的正确语法
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 非标准语法,使用 & 创建指向成员的指针
- 将引用绑定到指针的语法是什么?(各种)
- 如何使用二维语法访问指针
- 带有自定义类的共享指针语法背后的任何原因,如下所示
- 非标准语法使用 '&' 创建指向成员 C++ 的指针
- 如何在不更改现有函数语法的情况下将普通指针替换为共享指针
- C++指向函数声明语法的指针
- 难以理解指针语法C++
- 数组的语法指针C++