【发布时间】:2013-11-06 07:59:46
【问题描述】:
下面给出的程序有一些疑问。任何讨论都将有助于了解内部结构。
#include <iostream>
using namespace std;
int main() {
// your code goes here
char* ptr = new char[11];
ptr = "helloworld";
cout << ptr;
int* ptr1 = new int[2];
//ptr1 = {12, 24};
cout << ptr1;
return 0;
}
- cout
- 自从 cout
- 如果 ptr = "helloworld";被允许。为什么 ptr1 = {12, 24};不允许吗?
【问题讨论】:
-
1.因为
const char *有一个单独的重载,因为它通常表示字符串。 2.投到(void *)。 3. 因为标准是这样说的。 -
ptr = "helloworld";也是不允许的,因为ptr是char*。 -
@Nawaz 为什么不允许。 ptr 是 char*,而“helloworld”是 char 数组,那么有什么问题呢?你可以在这里查看。 ideone.com/QsqKrN 允许。
-
@DeveshAgrawal 字符串文字是
const char的数组。 -
@nawaz 如果我没记错的话 char* ptr 被视为 const char* ptr。如果不是,那么我会将 char* ptr 设为 const char* ptr。那它就被允许了吧?