当设置等于“”时,啥是 char*?
Posted
技术标签:
【中文标题】当设置等于“”时,啥是 char*?【英文标题】:What is a char* when set equal to ""?当设置等于“”时,什么是 char*? 【发布时间】:2017-02-06 02:40:04 【问题描述】:我正在尝试为赋值编写自己的字符串类,我想知道如何处理“”的参数。
例如,如果有调用:
s = myString("")
长度是多少,在我的“myString”类中保存数据的 char* 的内容是什么?
【问题讨论】:
长度为 0,所以 char* 不应包含任何内容(即 char[0] 为 NULL) (char[0]
将是 0,而不是 NULL)
char[0]
不是指针,因此它不会为 NULL。零
那么它的长度会不会是 1,char[0] 会是 0,然后会有一个以 null 结尾的字符?
在空(C 风格)字符串的情况下,char *str = ""
、str[0]
是 0
,而 是 终止 NUL 字符。之后没有额外的 NUL 字符。 (注意“NUL”指的是零 ASCII 值,而 C 和 C++ 中的“NULL”是一个特殊的指针值,它不指向内存中的某个位置。它是终止 C 样式字符串的前者。)
【参考方案1】:
传递给您的char *
将是一个指向char
的“空”终止列表的指针,该列表很可能是一个单一的、不可变的char
,其值为0
(或“空")。
例如...
const char* s = "";
char value = *s;
int length = strlen(s);
...应该导致...
s == [compiler defined]
!value == true
length == 0
【讨论】:
更具体地说是指向不可变char
的指针,其值为 0
。以上是关于当设置等于“”时,啥是 char*?的主要内容,如果未能解决你的问题,请参考以下文章