您的位置:首页 > 其它

const与指针

2013-04-08 11:54 155 查看
指向常量的指针:

const int *p;

int const *p;


指针p的指向可以改变,但是指针p指向的变量的值不能通过p来改变。

const int *p = &a;
p = &b;  //正确
(*p)++;  //不会报错但是不能改变p指向的变量的值


const指针:

int * const p;


指针的指向在声明时确定后就不能更改,但是可以改变指针指向变量的值。

int * const p = &a;  //声明时必须确定指针的指向
(*p)++;  //可以改变指针指向变量的值
p = &b;  //会报错,无法改变const指针的指向


结论:const在*左边,指针的指向可以改变,指针指向的变量的值不能通过指针改变(可以通过其他方法更改变量的值),很多函数的参数类型就是const type *,就是为了防止在函数中改变指针指向变量的值;const在*右边,指针的指向不能改变,声明时必须确定指针的指向,指针指向的变量的值可以改变。

附加:

*运算符和++,--,->的使用。

*p++ 先执行指针+1,然后对指针执行间接访问运算;++*p先执行间接运算,然后对间接运算得到的结果+1。(--运算符相同)

struct test{
int a;
char c;
};


struct test *q; 


++q->a;  先执行->运算再对a执行++运算。

q++->a;  先对q进行++运算然后再执行->运算。(--q->a和q--->a类似吧)

  

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: