zoukankan      html  css  js  c++  java
  • c语言常量指针赋值给变量指针导致警告


    常量指针定义:常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针。指针指向的对象是常量,那么这个对象不能被更改。常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值。

    在C/C++中,常量指针是这样声明的:

    1)const int *p;

    2)int const *p;

    例子:

    int a = 5;

    const int b = 8;

    const int *c = &a; // 这是合法的,非法的是对c的使用

    *c = 6; // 非法,但可以这样修改c指向的对象的值:a = 6;

    const int *d = &b; // b是常量,d可以指向b,d被赋值为b的地址是合法的

    我在这里想重点说明的是,在一个函数的定义里,将一个常量指针赋值给变量指针,然后通过这个变量指针是可以修改常量指针指向的对象的。

    但是,编译器会给出一个警告:warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
      p=a;
       ^
    void testp(const int *a,int n)
    {
      int *p;
      p=a;
      p[0]=12;     //修改了数组a[0]的值,而编译器只是给了一个警告,所以,警告也要足够重视。
      a[0]=12;     //直接修改a,编译器会报错,因为定义了const属性。
    }

  • 相关阅读:
    RMI方式Ehcache集群的源码分析
    Bootstrap简单HelloWorld入门教程
    深入剖析Tomcat会话机制
    Redis主从和HA配置
    Ajax
    java数组复制===clone()
    java使用array.copy复制数组
    java数组复制的简单方法(一)
    java ------------用Array.sort()输出数组元素的最大值,最小值,平均值~~~~
    java从键盘输入若干数,求其最大值,最小值,平均值。等等
  • 原文地址:https://www.cnblogs.com/litifeng/p/5831076.html
Copyright © 2011-2022 走看看