zoukankan      html  css  js  c++  java
  • 21年4月19数组与指针(一)

    1.const  与   *

    2.指针类型

    3.数组名与数组首地址

    ps :  指针加1,应该说是指针偏移一个单位,这个单位大小就是指针的类型

    注意区分 指针 与 指针的类型  https://blog.csdn.net/weixin_44781107/article/details/89405934

    1.const  与   *

    const  int  *  p1 = &a;

    int  *  const  p2=&a;

    const 在 * 左边的时候,限制 * .     也就是限制指向(解引用)的能力,表现在p1的地址变量可以修改(p1=&b;),可以读a的值,但是不能对a赋值

    const 在 * 右边的时候,限制 p2 .  也就是限制指针自身(指针就是地址),表现在p2的地址变量不可以修改(p1=&b;不通过),可以读a的值,可以对a赋值(赋值就是解引用的能力)。

    指针 ≠ 指针变量

    指针就是地址,指针变量就是存储地址的变量。就和整型与整型变量的关系。

    2.指针类型

    野指针       int *p;                   定义的时候没有初始化

    空指针       int *p=nullptr;       定义的时候初始化为空

    失效指针   int *p = (int*)malloc(sizeof(int)*n);

         free(p);

         完成这两句后就是失效指针。(内存释放了,但是该指针任然指向该内存的地址)(很危险)

    3.数组名与数组首地址

    下图的  ar++;   ar=ar+11;   这些操作是违法的,为什么?

    数组名作为数组首地址的时候,自身是常性值,就是不能改变自身的值,这两个语句都改变了自身的值

    但是为啥ar+1,  &ar+1   可以显示出结果?

    因为是在这个值的基础上进行运算得出的结果,这个过程并没有改变常性值的自身。

    ar   是     数组首元素的地址(和&arr[0]一样)     所以加一加了4字节

    &ar是     整个数组ar的地址。          所以加一加了20字节(整个数组的大小)

    值相同,但是“意义不同”

    Linux学习笔记
  • 相关阅读:
    Entity Framework Tips: IN关键字的支持
    (转载)用IT网络和安全专业人士视角来裁剪云的定义
    解决数据库查询中的锁冲突
    2010年计划
    MergeOption 枚举实测
    习惯的力量
    Entity Framewok中获取实体对象的部分属性
    JQuery下拉框联动本地数据
    Json学习整理
    Hadoop:mapreduce的splitsize和blocksize
  • 原文地址:https://www.cnblogs.com/zealwang/p/14679108.html
Copyright © 2011-2022 走看看