NPS*_*NPS 1 null-terminated nullptr c++11
也许它是愚蠢的或明显的,但我不能谷歌任何答案.什么字符结束以空字符结尾的字符串C++11?NULL(事实上0)或新的nullptr?一方面,nullptr应该取代NULL.但另一方面,我不确定它是否nullptr是一个角色.或者可以解释为一个.
NULL并且nullptr与以null结尾的字符串几乎没有关系.双方NULL并nullptr用来表示指向什么,即一个指针.null.
c样式字符串的空终止仍然(并且一直)由CharT具有整数值的a表示0; 或者通常在谈话时写的,通过字面意思 ; '\0'.
请记住,字符类型只不过是具有某些特殊含义的整数类型.
允许比较a char到a int(它是文字的类型0),它也允许将值赋给0a char,如上所述:字符类型是整数类型..并且整数类型包含整数值.
为什么会这么混乱?
回到我们没有的日子nullptr,我们用宏NULL来表示某个指针没有任何指向.值NULL是,并且是特定于实现的,但行为是明确定义的; 它不应该与任何实际指向某事物的指针值相等.
由于NULL描述了大量编译器#define NULL 0或类似构造的行为,导致了一个"特征",可以很容易地与NULL任何整数类型(包括char)进行比较,看它是否与零值相关.
如前所述,您经常偶然发现下面的代码,其中for-condition将等同于*ptr != 0.
char const * str = "hello world";
for (char const * ptr = str; *ptr != NULL; ++ptr) {
...
}
Run Code Online (Sandbox Code Playgroud)
获得的经验教训:仅仅因为某些工作并不意味着它是正确的......
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |