指针常量,常量指针
常量指针和指向常量的指针的区别:常量指针本身可以修改指向的内存地址,但不能修改所指向的数据;而指向常量的指针不能修改指向的内存地址,但可以通过其他方式修改所指向的数据。这是因为常量指针重点限制了对指针所指向数据的修改,而指向常量的指针则重点限制了对指针本身的修改。
//指针常量
#include <stdio.h>
int main()
{
int a = 10;
int * const p = &a; //指针常量,指针是常量,指针不可更改
*p = 20; //可修改该指针指向地址上的值
printf("%d %d\n",*p,a);
//p++; // error: increment of read-only variable ‘p’
//即,指针不可更改,因为是常量
return 0;
}
//常量指针
#include <stdio.h>
int main()
{
//static int sta = 10; //static只初始化一次,仅在本.c文件内可用
int a = 20;
const int *p = &a; //常量指针,常量不可以通过该指针更改
//*p = 10; //向只读位置‘*p’赋值,即不可更改指向的值
a=30;
printf("%d %d\n",*p,a);//可以使用其他方法更改值
return 0;
//总结,常量指针不可更改指向的地址上的值,但是可以改变指向,注意改变指向后指向地址的值也不可通过该指针更改
}