有什么区别:
char * const
and
const char *
有什么区别:
char * const
and
const char *
当前回答
这里x基本上是一个字符指针,指向一个常数值 Char * const x是一个字符指针,它是一个常量,但是它指向的位置可以改变。 Const char* Const x是1和2的组合,意味着它是一个指向常量值的常量字符指针。 Const *char x将导致编译器错误。它不能被宣布。 Char const * x等于点1。
经验法则是,如果const是var名称,那么指针将是常量,但指向的位置可以改变,否则指针将指向一个常量位置,指针可以指向另一个位置,但指向的位置内容不能改变。
其他回答
这里x基本上是一个字符指针,指向一个常数值 Char * const x是一个字符指针,它是一个常量,但是它指向的位置可以改变。 Const char* Const x是1和2的组合,意味着它是一个指向常量值的常量字符指针。 Const *char x将导致编译器错误。它不能被宣布。 Char const * x等于点1。
经验法则是,如果const是var名称,那么指针将是常量,但指向的位置可以改变,否则指针将指向一个常量位置,指针可以指向另一个位置,但指向的位置内容不能改变。
const修饰符应用于紧挨着它左边的项。唯一的例外是,当它的左边没有任何东西时,它就适用于它右边的东西。
这些都是“指向常量char的常量指针”的等效方式:
Const char * Const Const char Const * Char const * const Char const const *
我猜你指的是const char *和char * const。
第一个const char *是一个指向常量字符的指针。指针本身是可变的。
第二个,char * const是一个指向字符的常量指针。指针不能改变,但它所指向的字符可以。
然后是const char * const,指针和字符不能改变。
我记得捷克的一本关于C的书:读声明,你从变量开始向左走。 因此,对于
char * const a;
你可以读成:“a是指向char的常量指针类型的变量”,
char const * a;
你可以读成:“a是一个指向char类型常量变量的指针。我希望这能有所帮助。
奖金:
const char * const a;
您将读取为指向char类型的常量变量的is常量指针。
经验法则:从右向左阅读定义!
Const int *foo;
意思是“foo指向(*)一个不能改变的int (const)”。 对于程序员来说,这意味着“我不会改变foo所指向的值”。
*foo = 123;或者foo[0] = 123;是无效的。 Foo = &bar;是被允许的。
Int *const foo;
意思是“foo不能改变(const)并将(*)指向int”。 对于程序员来说,这意味着“我不会改变foo引用的内存地址”。
*foo = 123;或者foo[0] = 123;是被允许的。 Foo = &bar;是无效的。
Const int * Const foo;
意思是“foo不能改变(const)并将(*)指向一个不能改变的int (const)”。 对于程序员来说,这意味着“我不会改变foo所指向的值,也不会改变foo所指向的地址”。
*foo = 123;或者foo[0] = 123;是无效的。 Foo = &bar;是无效的。