本文介绍了C:常量与未常量..how走到这编译?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个简单的C函数,我的声明:
INT的strlen(为const char * str_)
{
str_ =(字符*)0;
返回0;
}
我觉得很奇怪,那编译!这是为什么?
而这onedoesn't编译(这是有道理的):
INT STR(const int的I_)
{
I_ = 0;
返回0;
}
解决方案
由于为const char * str中_
表示,str_是一个指向字符常量的。
您可以str_本身的改变,但不是它指向的。
INT的strlen(为const char * str_)
{
str_ =(字符*)0; / *宠物* /
str_ [0] ='\\ 0'; /* 不允许 */
返回0;
}
I have a simple C function which I declare as:
int strLen(const char* str_)
{
str_ = (char*) 0;
return 0;
}
I was very surprised that that compiles! Why is that?
Whereas this onedoesn't compile (which makes sense):
int str(const int i_)
{
i_ = 0;
return 0;
}
解决方案
Because const char* str_
says that str_ is a pointer to const characters.
You can change str_ itself, but not what it points to.
int strLen(const char* str_)
{
str_ = (char*) 0; /* allowed */
str_[0] = '\0'; /* not allowed */
return 0;
}
这篇关于C:常量与未常量..how走到这编译?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!