今天看书看到const修饰符,想起来,自己还不是很懂.刚跟朋友讨论了一下,把结论总结一下,方便自己和网友们:
1.常量指针
如:int const *p;
意思是p是一个指向常量或变量的指针,但是不能通过*p改变被指向的变量的值,不管它是常量还是变量,const*p都把它当作常量;
例子:
#include<stdio.h>
int main(void)
{
int const i=3;
int const *p;
p=&i;
*p=5;//此处提示不能给只读指针赋值
printf("%d\n",*p);
return 0;
}
i可以不用const修饰.但是有const修饰的话,如i=5也是会出错的.
2.指针常量
如:int *const p;
意思是p本身是一个常量,一旦初始化时指向一个变量后就不能再指向其他变量了.(不能指向常量);
例子:
#include<stdio.h>
int main(void)
{
int i=3,j=4;
int *const p=&i;
p=&j;//此处提示不能给只读变量赋值
printf("%d\n",*p);
return 0;
}
以上结论,可能存在解释错误.欢迎大家给出正确的结论.非常感谢!