char
代表一个字符(分配在堆栈上)。如果您想将其设置为空,请使用char c = '\0'
或char c = (char) 0
。
char* cPtr
是一个指向角色的指针。您可以使用char* c = new char('\0')
在堆上分配一个空字符。
char c[n]
是大小为n
的字符数组。
编辑
由于人们正确地指出了下面,一char
从来都不是空的,在同样的意义作为容器如std::vector
或std::string
可以是空的。 A char
与例如int
没有本质上的区别,它只是更短(1字节而不是2或4或8)。 int
可以为空吗?不是这样;它可以是零,这意味着它的所有位在内存中设置为零,并且字符也是一样。 char c = '\0'
将在堆栈上表示为“00000000”。
另一方面,指向char(char* cPtr
)的指针可以是'空'的,因为它可以指向任何地方,通过将其设置为NULL
。在这种情况下,指针本身将存在于堆栈中,并且将包含您的系统解释为NULL
的特殊序列0/1。一旦你做了cPtr = new char('\0')
,一个char
(即一个字节)将被分配到堆上并设置为“00000000”,堆栈上的cPtr
的值将被更改为指向堆上新字符的地址。
PS:实际上并没有char* cPtr = new char('\0')
,请使用std::vector<char>
或std::string
。此外,你可能想看看smart pointers。
来源
2014-07-23 11:11:49
MGA
我可能会说明显而易见,但不应该是'f'(带单引号)? –
此外,你错过了一个分号。如果_“它给了你[你]错误”,那么你将很高兴指定你正在获得的错误。 – Michael
“空炭”是什么意思?一个角色总是有价值的。什么是'f'?你的意思是字符常量“f”吗?你得到的错误是什么,如果你添加缺少的';',你还会得到它吗? –