为什么函数"strlen"不能像这样修改"ch1"的长度?
why the function “strlen” can't get the length of "ch1" modified like this?
在此处输入图像描述
我声明了一个指向char数组类型的指针,并将其中一个元素更改为"\0"。我认为函数"strlen"可以获得"\0"的第一个元素的长度,但实际上,程序崩溃了。有人知道原因吗?
您的字符指针指向一个字符串文字,它是不可变的数据。出于向后兼容性的原因,编译器允许一个非常常量char*
指向文字,但正如您所注意到的,试图修改字符串会导致程序崩溃。
相关文章:
- 是否可以像这样编写c malloc函数代码
- 为什么我不能像这样在静态成员函数中调用静态成员变量?
- 对于像C++这样的现实世界语言,时间复杂性有什么一致的定义吗
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- 为什么我不能像这样直接将 int 分配给 int 指针:int *p = 6;?
- 如何将像'A'这样的单个字符替换为类似"10"?
- 为什么我不能像这样C++访问类的对象?
- 为什么这个指针到指针的二维数组像这样分配新的 int
- 像这样的PIMPL实现是否有任何简单的语法
- 使用输入重载时,是否可以像这样退出 while 循环
- 像这样的 for 循环被认为是不好的做法吗?
- 为什么 std::experimental::filesystem::p ath 不接受像 "*" 这样的通配符?
- 像这样写作业有什么问题
- 不应该像这样从 stl::list 中删除进入无限循环
- 为什么我不能像这样擦除矢量的所有元素?
- 为什么我不能像这样初始化结构
- 像这样在堆栈上创建一个小的像素图可以吗
- 是否可以像这样使操作员过载<<?
- C 是否有一个像 C++ 这样的定义规则
- 为什么函数"strlen"不能像这样修改"ch1"的长度?