赋值时执行char*,以null结束String
Does a char* when assigned a value terminates the String With a null?
假设我的代码如下:-
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
相关文章:
- 为什么在这个代码结束循环中没有得到结束
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- 试图对缓存进行跨步测试,但程序并没有结束
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 为什么擦除方法会影响结束方法
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 删除映射和分割错误中的一个过去结束元素
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 为什么我的两个 cin 语句没有在程序结束时运行?
- cin函数是否添加了在输入结束时终止的null
- 赋值时执行char*,以null结束String
- 字符指针的二维数组是否需要以两个null结束?
- 如何确保在constexpr函数中接受一个数组,该数组以null结束