yinble

导航

 

指向常量的指针:

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类似吧)

 

  

  

  

posted on 2013-04-08 11:54  yinble  阅读(147)  评论(0编辑  收藏  举报