赋值时执行char*,以null结束String

Does a char* when assigned a value terminates the String With a null?

本文关键字:null 结束 String 执行 char 赋值      更新时间:2023-10-16

假设我的代码如下:-

char *abc = " Who cares";
int len= strlen(abc);

这提供了abc的长度。我的疑问是斯特伦是如何决定这里是ABC。当然,它查找null终止并返回值。但这是否意味着abc在我用值"谁在乎"初始化它的地方被分配为Null ?

char *abc = " Who cares";

声明了一个指针abd指向位于只读(实现定义)位置的字符串字面值"Who Cares"。是的,它是NULL终止。

不要尝试修改这个字符串字面值,因为它会导致未定义行为

同样,在c++中正确的声明方式是:

  const char *abc = " Who cares";

是的,strlen遍历abc指向的内存,直到找到一个空终止字符。

abc未初始化为null。编译器将字符串放在内存中的某个地方(包括隐式的null终止字符);然后将abc初始化为字符串中第一个字符的地址。

:

 0x1234                        0x123E  (example addresses)
+--+--+--+--+--+--+--+--+--+--+--+
|  |W |h |o |  |c |a |r |e |s ||
+--+--+--+--+--+--+--+--+--+--+--+
 ^
 |
 |
abc = 0x1234