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;
内存初始化
阵列:
第一个字符初始化为零。数组未初始化。第一个字符已初始化为零。数组不可用。