zoukankan      html  css  js  c++  java
  • C语言中const和数组

    C语言中const的用法

    const:在定义变量时,如果使用关键字const,那就表示限制这个变量值不允许被改变。

    (1)     修饰变量

    const离谁越近,谁的值就不能改变.

    int const a=0 声明一个变量a,把0赋值给a,用const修饰之后,a再也不能被赋其他值。此时int const a=0等价于const int a=0。

    注:int const a;

      a=0;

    这样的写法是错误的,因为a已经被const修饰,不能被赋值了。

    (2)     修饰指针

    int const *p=&a

    声明一个int类型的指针p,内存为p分了一个单元,里面存的是一个整型数据单元a的地址。*表示索引,*p就是根据a的地址找到该地址所对应的内存单元,取出里面存的值。*p的值就是内存单元p里的地址指向的值。然后const修饰了*p,表示那个整型数据不能被修改。也就是说整型单元a里的数据不能被修改。但是此时可以改p的值,p没有被const修饰。

    此时int const *p=&a等价于const int *p。

      int * const p=&a

    声明一个int类型的指针p,内存为p分了一个单元,里面存的是一个整型数据单元a的地址。*表示索引,*p就是根据a的地址找到该地址所对应的内存单元,取出里面存的值。*p的值就是内存单元p里的地址指向的值。然后const修饰了p,表示内存单元p不能重新被赋值,只要p没被释放,p中存的只能是此时a的地址(p=&b就是错误的)。但是此时*p没有被const修饰,所以我们可以通过*p来改整型单元a中存的值(*p=b;)。把b的值赋给a。

    const int* const p

     p的值被const修饰了,*p也被const修饰了。所以p的值不能被修改,*p也不能被修改(p=&b;*p=b;都是错误的)。

    一维数组

     

       数组:一组数据的整体。当你定义一个数组时,内存会为你分配一块连续的存储单元。数字中的每个数据都会依次存入这块连续的单元中。

       int a[4]={1,2,3,4};

     声明一个整型数组,该数组有四个元素,数组名为a,同时也是该数组的首地址。我们可以通过偏移量来访问数组的每个元素。

    数组指针和指针数组

     

      数组指针:

    声明一个指针,然后让这个指针指向一个数组。

    int a[5]={0};

    int *p=a;

    让p指向数组a。把数组的首地址a赋值给p。同样我们可以用指针加上偏移量访问元素(*(p+偏移量))。

      指针数组:

        定义一个数组,这个数组里存放的每个元素都是相同类型的指针。

    int * p[4];

    定义一个数组p,有四个元素,该数组的类型为int *(整型指针)。所以这四个元素的类型都是int *。

  • 相关阅读:
    findIndex() 方法用法
    Centos7安装nginx1.17.5,集成upstream和stream
    Centos7安装docker
    LeetCode(C++)刷题计划:17-电话号码的字母组合
    LeetCode(C++)刷题计划:16-最接近的三数之和
    LeetCode(C++)刷题计划:15-三数之和
    LeetCode(C++)刷题计划:14-最长公共前缀
    LeetCode(C++)刷题计划:13-罗马数字转整数
    LeetCode(C++)刷题计划:12-整数转罗马数字
    LeetCode(C++)刷题计划:11-盛最多水的容器
  • 原文地址:https://www.cnblogs.com/wanglog/p/5543182.html
Copyright © 2011-2022 走看看