什么是const指针和整数const指针的区别?

时间:2011-11-21 05:33:17

标签: c pointers const

在阅读关于指针的教程时,我遇到了像这样的代码

const int *p;

int const *p;

int *const p;

它们的主要区别是什么?

虽然我分配了任何整数值的地址,例如

int b=100;
b=&p;

我收到错误。这有什么意义呢?任何人都可以用例子来解释它吗?

1 个答案:

答案 0 :(得分:3)

大部分时间,只需从右到左阅读。

int const *p;

p是指向const int”的指针。

int *const p;

p是指向const”的int指针。

例外情况是const是最左边的关键字:

const int *p;

然后它与:

相同
int const *p;

如果指针是const,则无法修改其地址,但可以更改其指向的值。如果指向的值为const(在您的情况下为int),那么您无法修改指针所指向的内容(但您可以将其指向其他内容)。

作为一个无关的事情,这无法编译:

int b=100;
b=&p;

因为您要将指针的地址(int **)分配给b。这是非法转换。你可以用演员逼迫它,但我不认为这就是你想要的。