【发布时间】:2013-12-12 21:12:42
【问题描述】:
我应该如何理解char * ch="123"?
'1' 是char,所以我可以使用:
char x = '1';
char *pt = &x;
但是我怎么理解char *pt="123"?为什么char *pt可以指向字符串?
pt 的值是"123" 的第一个地址值吗?如果是这样,我如何获得pt指向的字符串的长度?
【问题讨论】:
-
是的,这是不合逻辑且可怕的。不是你的问题 - 带有空终止符的回归 C 风格字符串。 +1 用于识别指向实际上指向多个字符的 char 的指针的不合逻辑。
-
@MartinJames:这不是特定于 C 风格的字符串,任何指针都具有此功能...
-
@KarolyHorvath 并非每个指针都具有可以寻址字符串文字中的字符的功能。这个问题有几个方面(至少如果你想全面回答的话),其中一些只是关于指针,但有些是关于 C 对“字符串”的怪异处理
-
@KarolyHorvath:只有指向可变大小数据结构的指针才有这个问题。即使那样,只有当您认为“这个问题”无法仅从数据结构的类型和指针中知道数据结构的大小时。例如,您可以将“字符串”定义为字符串的长度,然后定义许多字节的字符数据,这将回避空终止带来的所有可怕问题。