修饰常量
const int a = 10;
int const a = 10;
常量指针
以下两种方式等价
const int *a;
int const *a;
常量指针说的是不可以通过指针改变指向内容的值,但是可以重新指向新的地址, 因此一般用作函数参数,防止内部通过指针地址中保存的值void test(int const * val)。
指针常量
不能改变指针指向,但是可以通过指针改变指向地址中的值。
如果指针常量作为函数参数,那么函数内部不能修改参数的指向,但是可以修改通过指针指向的值
指针常量在window编译器中可以修改const(现在这个应该还是在内存中),但是在keil中是不可以修改的,我们知道keil的常量是写在flash里面的
区别指针常量和常量指针,在*左边表示不能修改指向地址中的值,在*右边表示不能修改指向的地址。
指针常量和常量指针结合使用
如果将指针常量和常量指针结合使用const int * const a, 那么就都不能进行修改了
常量指针作为函数返回值
作为返回值,不能修改其返回内容的值
指针常量作为函数返回值
该方式是合法的,并且可以修改内容的值,如果外部改变值,可能会导致混乱,引入错误,慎用!!!