下列语句中错误的是( )。 A. int *p = new int(20); B. int *p = new int[20]; C. int *p = new int; D. int *p = new int[40] (10);
时间: 2023-06-16 22:04:38 浏览: 165
错误的语句是 D.
在使用 new 运算符时,我们可以指定需要分配的内存块的大小,并且可以选择初始化分配的内存块。
- A 中,我们使用 new int(20) 分配了一个 int 类型的内存块,并将其初始化为 20。
- B 中,我们使用 new int[20] 分配了一个 int 数组,其大小为 20。
- C 中,我们使用 new int 分配了一个 int 类型的内存块,但未对其进行初始化。
而在 D 中,我们试图分配一个大小为 40 的 int 数组,并将其初始化为 10。但是,使用 new 运算符时不能像这样提供初始化值。如果要对分配的数组进行初始化,可以使用循环或 memset 等函数。因此,选项 D 是错误的。
相关问题
下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。 A. int a, *x = a; B. int a, *x = &a; C. int *x = &a, a; D. int a, x = a;
正确答案是 B. int a, *x = &a;。
解析:
A选项中的 *x = a,表示将 a 的值赋给指针变量 x,这是错误的。应该将 a 的地址赋给指针变量 x,即 *x = &a。
C选项中的 int *x = &a, a;,表示先定义了指针变量 x,再定义变量 a,但是变量 a 没有被赋初值,这是错误的。应该先定义变量 a,再将变量 a 的地址赋给指针变量 x,即 int a, *x = &a;。
D选项中的 int a, x = a;,表示将变量 a 的值赋给变量 x,这是错误的。应该将变量 a 的地址赋给指针变量 x,即 int a, *x = &a;。
int *p=a;与int *p=&a;有什么区别?
在C++中,int *p = a; 和 int *p = &a; 这两个语句有显著的区别。
int *p = a; 表示将一个整型数组a的首地址赋值给一个指向整型数据的指针p。此时,p指向的是数组a的第一个元素的地址。
而 int *p = &a; 表示将一个指向整型数组a的指针赋值给一个指向整型数据的指针p。此时,p指向的是整个数组a的地址。
换句话说,int *p = a; 可以用来遍历整个数组a,而 int *p = &a; 通常用于传递整个数组a的地址给函数,或者用于在函数中操作整个数组a。