我只是想问一下下面的代码是否曾经被C ++认可为任何版本。
由于我的讲师向我透露了这可行,但是当我尝试时,出现编译器错误。
char name[20];
name = "some random name";
我知道用于初始化名称变量的不同方法,但是只要让我知道它是否起作用即可。
答案 0 :(得分:0)
否。
如果您的教练真的这么说,那就错了。
C和C ++都不允许将字符串文字分配给任何类型的现存数组。
不过,您可以通过这样的文字初始化 char
数组:
char name[20] = "some arbitrary name";
…但是您没有进行初始化;您正在执行分配。 (出于历史原因,一些较早的文本使用“ initialise”来表示“首次分配”;在C ++中不正确。)
在C ++中,我们倾向于使用动态分配std::string
,但确实允许分配:
std::string name;
name = "some arbitrary name";
name = "and now another one";
由于将字符串当作字符串处理的局限性而引入。
答案 1 :(得分:-2)
我确定您的老师是说:
char name[20]="This is a name";
甚至
char name[]="This is a name";