Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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++_Pointers - Fatal编程技术网

C++ 以下两个片段之间有什么区别?

C++ 以下两个片段之间有什么区别?,c++,pointers,C++,Pointers,及 因为我的代码被后者接受了 char *t=new char[102]; 为单个字符分配内存,并调用默认构造函数 char *t=new char(); 创建包含102个字符的数组并调用默认构造函数 char *t=new char(); 由于POD类型的默认构造函数为nothing,所以不同之处在于分配给单个char和char数组的内存量 为单个字符分配内存,并调用默认构造函数 char *t=new char(); 创建包含102个字符的数组并调用默认构造函数 char *t=ne

因为我的代码被后者接受了

char *t=new char[102];
为单个字符分配内存,并调用默认构造函数

char *t=new char();
创建包含102个字符的数组并调用默认构造函数

char *t=new char();
由于POD类型的默认构造函数为nothing,所以不同之处在于分配给单个char和char数组的内存量

为单个字符分配内存,并调用默认构造函数

char *t=new char();
创建包含102个字符的数组并调用默认构造函数

char *t=new char();

由于POD类型的默认构造函数是nothing,不同之处在于分配给单个char和char数组的内存量实际上都是char上的指针,但第二个是指向char数组的指针

它允许您在数组中存储102个字符

char *t=new char[102];
它允许您从0-101取消引用这些索引

而第一个允许您只存储一个字符

char *t=new char[102];

  0   1   2   3       101
+---+---+---+---+ ... +---+
|   |   |   |         |   |
+---+---+---+---+ ... +---+
  ^
  |
  -----------------------------+---+
                               | * |
                               +---+
                                 t
其中,取消引用0以外的其他索引将导致访问超出范围和未定义的行为

删除

删除字符char*t=新字符

其中删除一个数组char*t=new char[102];你必须写空括号,明确地说它是一个数组

delete t;
这些代码也一样

delete [] t;
内存初始化

阵列:


实际上两者都是char上的指针,但第二个是指向char数组的指针

它允许您在数组中存储102个字符

char *t=new char[102];
它允许您从0-101取消引用这些索引

而第一个允许您只存储一个字符

char *t=new char[102];

  0   1   2   3       101
+---+---+---+---+ ... +---+
|   |   |   |         |   |
+---+---+---+---+ ... +---+
  ^
  |
  -----------------------------+---+
                               | * |
                               +---+
                                 t
其中,取消引用0以外的其他索引将导致访问超出范围和未定义的行为

删除

删除字符char*t=新字符

其中删除一个数组char*t=new char[102];你必须写空括号,明确地说它是一个数组

delete t;
这些代码也一样

delete [] t;
内存初始化

阵列:

第一个字符初始化为零。数组未初始化。第一个字符已初始化为零。数组不可用。