C++ 困惑:指向动态数组语法的指针
以上代码对我来说很有意义。我使用反引用操作来分配新内存,并分配一个值78C++ 困惑:指向动态数组语法的指针,c++,C++,以上代码对我来说很有意义。我使用反引用操作来分配新内存,并分配一个值78 int* p_bob = new int; *p_bob = 78; 然而,这毫无意义。如果我尝试在p_dynint[]上使用de reference操作符,我会得到一个错误。为什么数组会有所不同?*p_bob=78这将值78分配给p_bob指向的内存(表示int) p_dynint[2]=12只访问第三个元素 p\u dynint[2]实际上相当于*(p\u dynint+2)*p\u bob=78这将值78分配给p
int* p_bob = new int;
*p_bob = 78;
然而,这毫无意义。如果我尝试在p_dynint[]上使用de reference操作符,我会得到一个错误。为什么数组会有所不同?
*p_bob=78
这将值78
分配给p_bob
指向的内存(表示int
)
p_dynint[2]=12代码>只访问第三个元素
p\u dynint[2]
实际上相当于*(p\u dynint+2)
*p\u bob=78
这将值78
分配给p_bob
指向的内存(表示int
)
p_dynint[2]=12代码>只访问第三个元素
p\u dynint[2]
实际上相当于*(p\u dynint+2)
p\u dynint[2]
相当于*(p\u dynint+2)
。解除隔离在[]
运算符中暗示。p\u dynint[2]
相当于*(p\u dynint+2)
。解除隔离隐含在[]
运算符中。执行此操作没有实际问题:
int* p_dynint = new int[10];
*p_dynint[2] = 12;
int*p_dynint=newint[10];
//写入第一个元素
*p_dynint=10;
//写入第二个元素
*(p_dynint+1)=20;
//将三个元素写入std::cout
std::cout这样做没有什么实际问题:
int* p_dynint = new int[10];
*p_dynint[2] = 12;
int*p_dynint=newint[10];
//写入第一个元素
*p_dynint=10;
//写入第二个元素
*(p_dynint+1)=20;
//将三个元素写入std::cout
std::你能不能再去用一次新的,听到了吗?使用std::make_shared
或类似的东西……“Ever”有点极端,尽管我明白你的意思。例如,我相信你别无选择,只能使用new
和unique\u ptr
。你从来没有,从来没有再去使用new
,听到了吗?使用std::make_shared
或类似的东西……“Ever”有点极端,尽管我明白你的意思。例如,我相信您别无选择,只能将new
与unique\u ptr
一起使用。实际上,no.p\u dynint[10]
会导致未定义的行为,任何事情都可能发生。包括崩溃。事实上,没有。p\u dynint[10]
会导致未定义的行为,任何事情都可能发生。包括撞车。