Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 困惑:指向动态数组语法的指针_C++ - Fatal编程技术网

C++ 困惑:指向动态数组语法的指针

C++ 困惑:指向动态数组语法的指针,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

以上代码对我来说很有意义。我使用反引用操作来分配新内存,并分配一个值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_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]
会导致未定义的行为,任何事情都可能发生。包括撞车。