当函数参数为字符串的一个指针或者引用时,怎样声明才能 避免该字符串在函数中被修改?
如题 问题点数:20、回复次数:11Top
1 楼rockersz(世上的无奈需要我去忍耐...)回复于 2006-03-08 16:26:03 得分 3
加constTop
2 楼collecte(问题虫)回复于 2006-03-08 16:29:05 得分 0
我知道const , 可如果参数是 const char* 的话, 字符串的内容还不是可以修改?而CString 什么的实质上也是 char* 啊。
Top
3 楼Mackz(在相互)回复于 2006-03-08 20:12:33 得分 10
const char* constTop
4 楼benxudong()回复于 2006-03-09 11:37:13 得分 0
我觉得在函数体中,可以先把字符串复制,就是创建新的字符串,把参数中的值赋给新创建的,用的时候就可以不修改了,想修改再设置回去Top
5 楼krfstudio()回复于 2006-03-09 11:48:05 得分 0
如果 const 不能满足你的要求的话,还是用 VirtualProtect 把字符串所在的内存块保护起来吧。Top
6 楼newcore(to be or not to be, it's a question.)回复于 2006-03-09 12:45:17 得分 0
int foo(const char* str, int len)
{
char temp[len + 1] = {0};
memcpy(temp, str, len);
//////////////////////////////
}
有那么麻烦么?
Top
7 楼particle80(冰蓝)回复于 2006-03-09 12:52:13 得分 0
const char * 好像就不能修改了啊?Top
8 楼ydfivy(我就是一送外卖的)回复于 2006-03-09 13:45:31 得分 7
const char * const sTop
9 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2006-03-09 13:52:21 得分 0
可以在函数内复制一个字符串Top
10 楼helldream2002()回复于 2006-03-09 14:19:13 得分 0
同意,newcore的
不知道有什么麻烦Top
11 楼collecte(问题虫)回复于 2006-03-09 15:57:41 得分 0
谁不知道复制字符串啊,可是函数又不一定是自己实现,就算是自己做,过了很久也可能疏忽啊。Top




