有什么区别:

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和*之间,它将影响最近的一个。

e.g.

Char const *。这是一个指向常量char的指针。 Char * const。这是一个指向char类型的常量指针。

我记得捷克的一本关于C的书:读声明,你从变量开始向左走。 因此,对于

char * const a;

你可以读成:“a是指向char的常量指针类型的变量”,

char const * a;

你可以读成:“a是一个指向char类型常量变量的指针。我希望这能有所帮助。

奖金:

const char * const a;

您将读取为指向char类型的常量变量的is常量指针。

const修饰符应用于紧挨着它左边的项。唯一的例外是,当它的左边没有任何东西时,它就适用于它右边的东西。

这些都是“指向常量char的常量指针”的等效方式:

Const char * Const Const char Const * Char const * const Char const const *

Const char*是一个指向常量字符的指针 Char * const是一个指向字符的常量指针 Const char* Const是一个指向常量字符的常量指针