在下面的一段代码中,计算strlen,
int s(const char* str)
{
int count=0;
while(*str++) count++;
return count;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到参数str是const.但是,当我执行str ++时,编译器不会抱怨.我的问题是
当将指针作为参数传递给C函数时,如果是用const限定的,我怎么还能对它执行指针算术?上述函数中的const是什么?
kyn*_*tto 12
const char* str;
Run Code Online (Sandbox Code Playgroud)
表示指向const数据的非const指针.
char* const str;
Run Code Online (Sandbox Code Playgroud)
表示指向非const数据的const指针.
const char* const str;
Run Code Online (Sandbox Code Playgroud)
表示指向const数据的const指针.
原因是在C++中,变量类型声明从右到左进行解析,这导致单词"const"始终定义它最接近的事物的常量.
这不是声明指针const,它宣告了东西指着作为const.试试这个:
int s(const char* const str)
Run Code Online (Sandbox Code Playgroud)
使用此声明,修改时应该出现编译错误str.
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |