您的位置:首页 > 理论基础 > 数据结构算法

关于const修饰指针

2016-11-26 13:30 197 查看

基本的指针

int i = 0;
int *p = &i;
printf("%d\n",*p);


输出是0,指针p可以随意操作

const在*左边(左定值)

int i = 0;
const int *p = &i;
int const *q = &i;
printf("%d %d\n",*p,*q);
int temp = 2;
p = &temp;
printf("%d %d\n",*p,*q);
*p = temp;


第一个printf输出0 0 ,第二个printf输出2 0,最后一行编译错误

当const在*左边的时候,指针所指向的值为只读属性,但是指针是可以指向其他地址的

const在*右边(右定向)

int i = 0;
int * const p = &i;
printf("%d\n",*p);
int temp = 2;
*p = 1;
printf("%d %d\n",*p,i);
p = &temp;


第一个printf输出0,第二个printf输出1 1,最后一行编译错误

当const在*右边的时候,指针不可以改变指向,但是最初指向的变量不是只读属性,可以更改里面的值

混合使用(又定值又定向)

int i = 0;
const int * const p = &i;
printf("%d\n",i);
int temp = 2;
p = &temp;
*p = 2;


之前两种结合,最后两行都会报错

当混合使用的时候,指针p又定值又定向
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 const 数据结构