首页 > 试题广场 >

下列语句中错误的是()?

[单选题]

下列语句中错误的是()

  • int *p = new int(10);
  • int *p = new int[10];
  • int *p = new int;
  • int *p = new int[40](0);
推荐
D 说明:"int * p=new int(10);"表示动态分配1个整型内存空间,初值为10;

"int * p=new intC10 ];"表示动态分配10个整型内存空间;

'int * p=new int;"表示动态分配1个整型内存空间;
"int * p=new int [ 4的(0)"想给一个数组分配内存空间时,对数组进行初始化,这是不允许的。
发表于 2018-05-05 21:08:15 回复(1)
int *p=new int[40]();  在分配空间后,对每个int进行了默认的初始化操作。即p[n]的值(n的取值范围是0-39)都是为0的。
int *p=new int[40](0);  这样是起不到对数组初始化为0的效果的,而且语法是错误的。
正常的应该是用大括号,int *p=new int[40]{0,1,2,3,4};  
发表于 2019-02-21 17:46:00 回复(12)
D选项,给数组初始化应该用初始化列表{},而不能用()。
想象我们一般定义数组并且初始化应该是 
int a[5] = {1,2,3,4,5};
而不会是
int a[5] = (1,2,3,4,5);
发表于 2019-06-12 08:40:53 回复(0)
1.给某一个变量赋予初值,则可使用(),如a选项; 2.给某数组赋予初值时,则不能使用(),而应该要用中括号就像 int a[5]={1,3,5,7,9},即int *p=new int[40]{0}。
发表于 2020-05-07 12:34:17 回复(0)

在C++中,用于动态分配内存的new表达式中,我们不能直接初始化动态数组的元素。因此,D选项中的语句是错误的。

正确的语句应该是: A. int *p = new int(10); (用于分配单个整型变量并初始化为10) B. int *p = new int[10]; (用于分配包含10个整型变量的数组) C. int *p = new int; (用于分配单个未初始化的整型变量)


语法: 
                // new 创建一个对象 
                    类型 * 指针变量名 = new 类型;       //调用的默认的构造函数(不带参数的或者等同于不需要参数的)
                                                        //new完一个对象后,返回这个对象的首地址 

                    类型 * 指针变量名 = new 类型(参数);   //调用 参数最匹配的那个构造函数
                    类型 * 指针变量名 = new 类型{参数};
                                                        //new完一个对象后,返回这个对象的首地址

                // new 创建一组(多个)对象  (多个对象,地址是连续的, "数组" )
                    类型 * 指针变量名 = new 类型[对象个数];
                            //一次性new多个对象, 这n个对象在内存中的地址是连续的
                            //只能调用默认的构造函数 (不需要参数的), 调用n次 
                            //如果没有不需要参数的构造函数 则会报错 

                    类型 * 指针变量名 = new 类型[对象个数]{ 初始值1, 初始值2, ... };
                            //第一个对象 调用的构造函数 类名(初始值1)
                            //第一个对象 调用的构造函数 类名(初始值2)
                            // ... 
                            // 初始值不够n个,则后面的对象 调用不需要参数的构造函数  
                            // 如果一个构造函数 带有多个参数? 
                            // { 初始值1, { 初始值2, 初始值3}, 初始值4, ... }
发表于 2023-11-09 19:13:31 回复(0)
给数组初始化应该使用列表{ }
发表于 2022-03-13 14:17:13 回复(0)
数组的初始化应该用{}而不是()
我们一般定义数组并且初始化应该是 
int a[5] = {1,2,3,4,5};
而不会是
int a[5] = (1,2,3,4,5);
发表于 2020-02-20 17:42:01 回复(0)
我这边在C++20标准下可以编译过啊
发表于 2024-01-09 12:46:05 回复(0)
初始化数组得用{},不能用(),所以语法上有问题,选D
发表于 2023-12-12 23:16:33 回复(0)
给某一变量赋值可以使用(),但是带有初始化列表的要使用{}
发表于 2023-10-08 19:28:13 回复(0)
关于A和D:A可以看做int *p = new int[1](10) 吧?,而D为int *p = new int[40](0) ,所以凭什么A对而D错啊?是不是不严谨呢?
发表于 2023-03-08 16:11:25 回复(0)
发表于 2022-03-19 11:47:30 回复(0)
D选择语法错误,=左边为指针,=右边为函数指针
发表于 2022-02-14 13:39:56 回复(0)
int *p = new int[40]()才对
发表于 2021-03-25 09:23:58 回复(0)
谁能告诉我后面的(0)什么意思
发表于 2020-05-22 17:33:49 回复(4)
c++的内存分配
发表于 2019-07-29 00:20:09 回复(0)
Int?int?
发表于 2018-05-23 14:06:49 回复(0)
下标~~~
发表于 2018-05-19 16:41:35 回复(0)