'new()' int和'int *p'有什么区别
what is the different between 'new()' int and 'int *p'
作为以下代码:
int *p;
*p = 10;
int *q = new() int(10);
我想知道p
和q
之间的区别。int *q = new() int(10)
可以在任何地方被int *q; *q = 10
取代吗?非常感谢。
int *p; *p = 10;
取消引用未初始化的指针具有未定义的行为。
int *q = new() int(10);
这在语法上是不正确的,如下编译器消息所示:
main.cpp:7:18: error: expected expression-list or type-id int *q = new() int(10); ^
所以,为了回答这个问题。。。
int *q = new() int(10)
可以在任何地方被int *q; *q = 10
取代吗?
没有。两者都不能在程序中的任何位置使用。
int *p
这定义了指针p。由于未初始化,p指向未知的内存位置。
*p = 10;
这是在尝试将内存位置设置为10。由于内存位置未知,这会导致未定义的行为。
将q初始化为10的正确代码是
int *q = new int;
这为int分配内存空间,然后使q指向这个内存位置。
*q = 10;
这会将此内存位置初始化为10。
否。它们相差甚远。
此:
int*p;*p=10;
声明一个名为p
的指向int的(未初始化的(指针。然后将值10
指定给p
所指向的值。这是"未定义的行为",因为p
未初始化。
此:
int*q=new((int(10(;
声明一个int指针q
,并将其初始化为指向new
分配的存储,该存储已为10个int分配了空间(如果我们忽略new后面语法不正确的"(("(。
总结一下:这两种代码都是无效的、损坏的代码,但并不相同。
注意:new(...)
是"新放置",这不是您想要的。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- "类模板示例<int>;"语句对 C++11 是什么意思?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 关于int :0有什么特别之处在C++
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- map<string, int> m= {}; 在C++中是什么意思?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- int x_ 和 int x 在C++中有什么区别
- 行 - " vector<int> used(adj.size(), 0); "是什么意思?
- int** a = new int*[n]();这个函数有什么作用?
- *(int*)&data[18]在这段代码中实际上做了什么?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- "new int * **[10]"做什么?
- 什么是int(*)[]类型
- 什么是变量均值'int border = borderType & ~BORDER_ISOLATED'?
- 代码中的"vector<<int>vector>&index"是什么意思?