首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问strchr函数

2012-09-29 
请教strchr函数strchr有两种。一种返回值是 const char * ,参数是const char *,int还一种是返回值是 char *

请教strchr函数
strchr有两种。
一种返回值是 const char * ,参数是const char *,int
还一种是返回值是 char *,参数是 char *,int
在p=strchr("abc",'a');
这一句中,p必须定义为 const char *p,编译器才不会报错。也就是字符串常量“abc”,被当做const指针了、
那为什么可以
 char *pt; 
pt="abcd";把一个const指针赋值给了非const指针???

[解决办法]

C/C++ code
char *pt;const char *pt;它们的含义都是pt存了一个地址。第一个的意思是地址指向的char可以改。第二个的意思是地址指向的char不可以改。strchr(pt);的意思是把pt存储的地址赋值给strchr(const char *s);的形参s,把地址拷贝给一个指针没问题吧,另外s可以加上更严格的限定,也就是char不可改。
[解决办法]
一般情况下,“safs”这样的字符串会被编译器优先考虑为const
[解决办法]
有函数原型,对函数调用进行类型检查

c 支持隐式转换
[解决办法]
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

[解决办法]
char *pt;
pt="abcd";
表示 指针pt 指向 常量"abcd" 里面是"abcd"的地址
而"abcd" 作为 常量是只读的 在内存里只读区域
char * p = "a";
const char *q = "b";
p=q;
把一个const指针赋值给了非const指针 错误

热点排行