zoukankan      html  css  js  c++  java
  • C语言中connst用法

    1、const一般用来定义只读变量,这个变量的之只能在初始化时赋值,如果初始化时没有赋值,则默认为0。如果在其他地方试图更改此值,编译会报错。如:

     1 #include<stdio.h>
     2 int main()
     3 {
     4         const int a;
     5         a+=2;
     6         printf("%d
    ",a);
     7         return 0;
     8 
     9 }
    10 
    11 
    12 运行结果:
    13 con.c: In function ‘main’:
    14 con.c:5:3: error: assignment of read-only variable ‘a’
    15   a+=2;
    

    2、const 和指针

    const和指针有以下几种书写方式:
    • const int *a

      指针指向的内容不可变,但指针可以改变

     #include<stdio.h>

    int main()
    {
            int w=1;
            int q=2;
            const int  *a=w;
            a=&q;
            ++a;
            ++*a;
            printf("%d/n",*a);

    }

    运行结果:

    con1.c: In function ‘main’:
    con1.c:10:9: error: increment of read-only location ‘*a’
             ++*a;

    • int const *a

       指针指向的内容不可变,指针可以改变。

     1 #include<stdio.h>
     2 
     3 int main()
     4 {
     5         int w=1;
     6         int q=2;
     7         int const *a=q;
     8         a=&w;
     9 //      int *const a=&w;
    10 //      const* int a;
    11 //      const int *a;
    12 
    13         ++a;
    14         ++*a;
    15 
    16 }
    

    运行结果:

     con1.c: In function ‘main’:
     con1.c:14:2: error: increment of read-only location ‘*a’
      ++*a;
     ^
    • int *const a

        const修饰了a, a本身是一个常量,而a还是一个指针,结果就是一个指针常量,指针不可变,但指针内容可变。

    #include<stdio.h>
    
    int main()
    {
            int w=1;
            int q=2;
            int *const a=&w;
            ++a;
            ++*a;
    
    }

    运行结果:

    con1.c: In function ‘main’:
    con1.c:8:9: error: increment of read-only variable ‘a’
             ++a;

     

  • 相关阅读:
    JAVA中内存分配策略里的堆与栈
    Java中间件:淘宝网系统高性能利器
    优化Java堆大小的五个技巧
    Java编程程序异常处理方法
    Java内存管理的九个小技巧
    c++ 函数模板
    c setsockopt设置套接字状态
    c++ typedef 类型重定义语句
    c getaddrinfo函数
    c iovec结构体 readv writev
  • 原文地址:https://www.cnblogs.com/wqaz-0-1-2-3/p/13416925.html
Copyright © 2011-2022 走看看