c 指针兼容性问题

指针兼容性问题:   

  1. const指针不能赋值给非const指针.   
  2. 非const指针可以赋值给const 指针,但前提是只是一层间接运算   
 1   Example:

 2   int *pt1;

 3       const *pt2;

 4       const **pt3;

 5   

 6       pt2=pt1;//OK

 7       pt1=pt2;//NO

 8       pt3=&pt2;//OK

 9       pt3=&pt1;//NO double indirection

10   Problem:

11   pt1=pt2;//NO

12   pt3=&pt2;//OK

13   pt3=&pt1;//NO double indirection

14   

15   Explain:

16   const n=5;

17   Int *p1;

18   Const int **p2;

19   //consumption  p2=&p1; is right

20   p2=&p1;

21   *p2=&n;//OK ,but this mean p1=&n;

22   *p1=10;//OK because p1 is not const ,but that will be contradicted with consumption

 

指针兼容性问题:   const指针不能赋值给非const指针.   非const指针可以赋值给const 指针,但前提是只是一层间接运算   Example:   int *pt1;       const *pt2;       const **pt3;          pt2=pt1;//OK       pt1=pt2;//NO       pt3=&pt2;//OK       pt3=&pt1;//NO double indirection   Problem:   pt1=pt2;//NO   pt3=&pt2;//OK   pt3=&pt1;//NO double indirection      Explain:   const n=5;   Int *p1;   Const int **p2;   //consumption  p2=&p1; is right   p2=&p1;   *p2=&n;//OK ,but this mean p1=&n;   *p1=10;//OK because p1 is not const ,but that will be contradicted with consumption

你可能感兴趣的:(兼容性)