有什么区别:
char * const
and
const char *
有什么区别:
char * const
and
const char *
当前回答
我想指出,使用int const *(或const int *)不是关于指向const int变量的指针,而是这个变量对于这个特定的指针是const的。
例如:
int var = 10;
int const * _p = &var;
上面的代码可以很好地编译。_p指向一个const变量,尽管var本身不是常量。
其他回答
第一个是语法错误。也许你指的是两者的区别
const char * mychar
and
char * const mychar
在这种情况下,第一个指针是指向不能更改的数据的指针,第二个指针将始终指向相同的地址。
Const char*是一个指向常量字符的指针 Char * const是一个指向字符的常量指针 Const char* Const是一个指向常量字符的常量指针
另一个经验法则是检查const的位置:
* =>之前存储的值为常量 * =>指针本身是常量
这里是一个详细的解释与代码
/*const char * p;
char * const p;
const char * const p;*/ // these are the three conditions,
// const char *p;const char * const p; pointer value cannot be changed
// char * const p; pointer address cannot be changed
// const char * const p; both cannot be changed.
#include<stdio.h>
/*int main()
{
const char * p; // value cannot be changed
char z;
//*p = 'c'; // this will not work
p = &z;
printf(" %c\n",*p);
return 0;
}*/
/*int main()
{
char * const p; // address cannot be changed
char z;
*p = 'c';
//p = &z; // this will not work
printf(" %c\n",*p);
return 0;
}*/
/*int main()
{
const char * const p; // both address and value cannot be changed
char z;
*p = 'c'; // this will not work
p = &z; // this will not work
printf(" %c\n",*p);
return 0;
}*/
const修饰符应用于紧挨着它左边的项。唯一的例外是,当它的左边没有任何东西时,它就适用于它右边的东西。
这些都是“指向常量char的常量指针”的等效方式:
Const char * Const Const char Const * Char const * const Char const const *