如何修改char *的值?

ATMCash4423 2011-09-15 05:21:17

int csCharExample(char* a,const char *b,char *c)
{
cout << a << " " << b <<endl;
strcpy(a,"asdf");//出错
memcpy(a,"asdf",sizeof("asdf"));//出错
cout << a << " " << b <<endl;
return 0;
}

如何修改形参char *的值?

我知道这样可以修改

int csCharExample(char **a,const char *b,char *c)
{
cout << a << " " << b <<endl;
*a = "asdf";
// strcpy(a,"asdf");
// memcpy(a,"asdf",sizeof("asdf"));
cout << a << " " << b <<endl;
return 0;
}


我就是想问问,如果char *传入后不能被修改,那还要在前面加const干啥啊?
...全文
888 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ATMCash4423 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
参数是指针,直接修改里面的值,只要那个参数指向的不是常量字符串
[/Quote]
问一下,char *p = “asdf”;p是否就是一个指向常量字符串的指针?
ATMCash4423 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
参数是指针,直接修改里面的值,只要那个参数指向的不是常量字符串
[/Quote]
额~~~我改成char数组就可以修改了……我还需要努力啊……
ATMCash4423 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
参数是指针,直接修改里面的值,只要那个参数指向的不是常量字符串
[/Quote]


int csCharExample(char *a,const char *b,char *c)
{
a = "qwe";
return 0;
}
int main()
{
char *p = "zhangsan";
char *n1 = p;
char *n2 = "wangwu";
char nc[10] = "lisi";
csCharExample(n1,n2,nc);
cout << n1 << " " << n2 <<" "<< nc <<endl;
return 0;
}

这样不能修改实参 n1的值啊!
周晓荣 2011-09-15
  • 打赏
  • 举报
回复
同问,莫非const只是进行编译时期的检测而已?

#include <iostream>
using namespace std;

void fntest(const char *p)
{
strcpy((char *)p, "change");//这里只报编译错误,强制转换就没问题了。
return ;
}

int main()
{
char test[128];
strcpy(test, "test");

cout<<test<<endl;
fntest(test);
cout<<test<<endl;

return 0;
}

ATMCash4423 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hzhxxx 的回复:]
char *b
b[0] = 'a';
b[1] = 'b';

char * ,实际是一个字符串数组啊
[/Quote]
我这样提示c++primer.exe 中的 0x0041311d 处有未经处理的异常: 0xC0000005: 写入位置 0x00420840 时发生访问冲突

int csCharExample(char *a,const char *b,char *c)
{
int ac = strlen(a);
for (int i = 0; i < ac;++i)
{
a[i] = 'a';
}
return 0;
}

七擒关羽 2011-09-15
  • 打赏
  • 举报
回复
。。。。一般的赋值就可以了

多看书,指针还是要会的
bdmh 2011-09-15
  • 打赏
  • 举报
回复
参数是指针,直接修改里面的值,只要那个参数指向的不是常量字符串
hzhxxx 2011-09-15
  • 打赏
  • 举报
回复

char *b
b[0] = 'a';
b[1] = 'b';

char * ,实际是一个字符串数组啊

33,322

社区成员

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

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