关于while (*str)的判断问题,字符串数组和字符串指针的判断条件不同吗

Fate_7 2018-09-15 11:17:32
定义的函数:
int replace(char *str, char c1, char c2)
{
int cnt = 0;
while (*str)
{
if (*str == c1)
{
*str = c2;
cnt++;
}
str++;
}
return cnt;
}

对于两个字符串:
char *a = "abccx";
char b[6] = "cdccy";
调用函数时,b作参数运行正常,a作参数时报错。显示.exe停止运行
请问是什么原因?a,b有何区别
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongwenjun 2018-09-15
  • 打赏
  • 举报
回复
const char *a = "abccx"; a 是一个指针, 指向 "abccx"这个内存中的常量,所以应该在前面加const ,如果你有去修改指针指向的常量,就会在编译时报错
hongwenjun 2018-09-15
  • 打赏
  • 举报
回复
举个例子标准库的 strcpy函数 char *strcpy( char *to, const char *from ); 功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。 第一个参数没有 const修饰,传入的参数一定要有实体分配内存。 第二个参数有const修饰,不会修改参数指向的内存空间。
Fate_7 2018-09-15
  • 打赏
  • 举报
回复
懂了,十分感谢。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧