美文网首页
C语言指针的兼容性_const

C语言指针的兼容性_const

作者: HOLD_C | 来源:发表于2017-06-22 13:45 被阅读0次

链接:www.cnblogs.com/rushuizhijing/archive/2011/08/26/2154737.html

本文只对上面链接中的 “ 四、关于char **p 、const char **p的类型相容性问题模块下

char **p1;const char**p2=p1;//不合法,会有警告warning: initialization from incompatible pointer type”,进行解决,我当初就是这块看不懂,一头雾水。

如果你也对上述连接中的该部分存有疑虑,我相信本文会对你有所帮助。

正文:

char **p1;const char**p2=p1;//不合法,会有警告warning: initialization from incompatible pointer type

知识点:把非const指针赋值给const指针是允许的,但这样的赋值有一个前提:只进行一次间接运算

在进行两次间接运算时,这样的赋值不再安全,可能会产生如下的问题:

const int **pp2;

int *p1;

const int n=13;

pp2=&p1; //不允许,但我们假设允许(看看会发生什么?)【key】

*pp2=&n; //合法,二者都是const,但同时会使 p1指向 n

*p1=10;  //合法,但这将改变const n的值

                                                     摘自 C Primer Plus(第五版)中文版【美】Stephen Prata

所以,如果【key】处如果允许,那么将会改变一个const n 的值,所以,编译器会报Warning。

值得一提的是:编译器对于const的检查是在编译期进行的,而在程序运行期间不再进行检查,

所以如果出现 n=10;那么编译器会毫不客气的给出error。

没了。

相关文章

  • 一、C++中的const、define

    C 语言中 在C语言中,const是个假语法,const 中的变量可以通过指针修改,例如: C++中 const ...

  • C语言指针的兼容性_const

    链接:www.cnblogs.com/rushuizhijing/archive/2011/08/26/21547...

  • const使用

    通过指针可以修改c语言中const修饰变量的值 const_cast

  • C语言指针 - const

    int const * const p; 相对于 * 号1、const 放左边表示 指针变量指向常量;2、cons...

  • C语言-const指针

    const 指针 在普通指针类型前面,加上const修饰 例如: const 指针:区别 加不加const,有什么...

  • 计算机基础的考察

    语言语法(以C/C++为例)。 指针(数组),函数指针,操作符运算顺序,const(常指针与指向常量指针),sta...

  • 初学C语言

    初学C语言——指针介绍 #include int main(int argc,const char * argv...

  • C++ 常用小点

    1. C++ 自定义String c语言常量不能修改,但是可以通过指针修改const int num = 100;...

  • const理解

    关于const *和* const的理解,可以参考[C C++ OC指针常量和常量指针区别]这篇文章。 该篇文章中...

  • c语言之const和指针

    const和指针 区别方法:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量...

网友评论

      本文标题:C语言指针的兼容性_const

      本文链接:https://www.haomeiwen.com/subject/sxqfcxtx.html