Rob*_*lls 48
如果您追求两者之间的差异,只需将它们视为:
T.J*_*der 24
const char *表示"指向不可修改字符的指针".它通常用于不应修改的字符串.
假设您正在编写此功能:
int checkForMatch(const char * pstr)
Run Code Online (Sandbox Code Playgroud)
你已经承诺(通过函数签名)你不会改变指向的东西pstr.现在说检查匹配的部分将涉及忽略字母的情况,并且您尝试通过在执行其他检查之前将字符串转换为大写来执行此操作:
strupr(pstr);
Run Code Online (Sandbox Code Playgroud)
你会得到一个错误,说你做不到,因为strupr声明为:
char * strupr(char* str);
Run Code Online (Sandbox Code Playgroud)
......这意味着它希望能够写入字符串.你不能写入a中的字符const char *(这就是const它的用途).
在一般情况下,你可以通过一个char *到的东西,需要一个const char *没有明确造型,因为这是做(说漏嘴修改的东西,不打算修改)一个安全的事情,但你不能传递const char *到什么期待char *(没有明确的演员),因为这不是一件安全的事情(传递一些不能被修改成可以修改它的东西).
当然,这是C,而你能做的只是用C任何东西,包括明确铸造const char *到char * -但是这将是一个非常,非常糟糕的主意,因为有(大概)一些原因,东西被指向的指针是const.