我用一个字符串初始化一个char[]
数组:"hello"
char str[] = "hello";
func(str);
现在,char[]
数组被传递给一个函数,带有一个const char*
指针参数:
void func(const char* str)
{
puts(str);
}
输出:
hello
为什么我不需要将char[]
数组类型转换为const char*
指针?
为什么我不需要将 char 类型指针类型转换为 const char 类型指针?
因为隐式限定转换。特别是,指向非常量类型的指针可以转换为指向相应const
类型的指针。
这可以从隐式转换中看出:
指向 cv 限定类型的类型指针的纯右值
T
可以转换为指向更多 cv 限定的相同类型的纯右值指针T
(换句话说,可以添加 constness 和易失性)。“更多” cv-qualified 意味着
指向非限定类型的指针可以转换为指向
const
;...
(强调我的)
例如,
int i = 0;
const int *p = &i; // conversion to const happens here
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句