我目前正在分析char和字符串数据类型。对于char
数据类型,剪断下面的代码保存好:将值赋给字符串指针
char value = 'a';
char value1[] = "Good";
char* value2 = "Good";
对于字符串,
string strValue = "Good";
string strVal[3] = {"Good","Better","Best"};
但下面的分配将引发编译错误:
"error: scalar object strPtr requires one element in initializer"
string* strPtr = {"Good","Better","Best"}
所以,最初如何将值分配到string*
以上?
感谢, Udhai
'char * value2 =“不好”;' - 通过语言设计中的错误,它是允许的,但它不应该是,它已被弃用。字符串文字驻留在只读存储器中,并且在该语句中,您正在为其中的第一个元素指定一个非const指针。所以如果你尝试修改字符串,它会编译,但它在运行时不起作用。那很糟。 – 2012-07-27 06:22:44
指针指向一个地址;对?因此,当你为一个指针“赋值”的时候,你必须首先去引用它,然后你可以在指针所指向的地址处真正处理数据。试图给一个未被引用的指针指定一个值就是说你试图改变你指向的数据的地址。你给一个'string *'分配的是一个已经定义好的,或者至少是被声明的'string'。 – ChiefTwoPencils 2012-07-27 06:29:50
在此期间没有固定过吗?我现在认为(C++ 0x或者更高版本的标准)字符串文字总是有const char *类型(并且这会产生编译错误)。 – Axel 2012-07-27 06:32:22