• 数组的深入理解


    C语言中:

                    1、变量的定义: 对象和变量要区分

                       变量是一种声明,通过声明,把一个 名字(人为定义) 与 对象对应起来,当我们使用该名字的时候,就表示我们对该对象进行某种操作。
          但是并不是每个对象都有名字,也并不意味着有对应的变量。比如临时对象(temporary object)就没有一个名字与之关联

          (不要误称为临时变量,这是不正确的说法)按照C的定义,左值是一个引用到对象的表达式,通过左值我们可以取出该对象的值。
          通过可修改的左值表达式(modifiable lvalue)我们还可以修改该对象的值

                       例如:   对象 = 刘德华;在计算机中进行声明 char andy; 变量 = andy,andy上进行某种操作,即是对刘德华同种操作。

                    2、& 只能对左值或函数 操作

                    3、数组 是特殊的指针类型, 数组是常量指针,数组元素是只读的。

    声明一个数组包括 :数据类型            数组名[数组长度]

    例如  int a[5] = {10,20,30,40,50}.

    指针指向一段 5个整型 的 连续内存.

    因此  *(a+3)  = 40 ,取值符括号里面是地址。而偏移的地址等于 3*int(所占字节)。

                                    回到代码中,只声明了 int类型 的 a[5] 数组,a+3这个变量并没有声明,也没有与之对应的对象,也不就存在。

                                    如果用取地址符去取,根本无法取到对象的地址。肯定是错误的。因为每次重新运行程序,系统又会随机分配空余空间,所以第一张图与二、三
    张图地址不一样,但是不影响,这里说明一下。而且细心的人可以发现两个数组地址是连续的。而且先存入内存的反而是低位,后存的反而是高位。

    由图可知,整形数组a的每个元素之差为4个字节,本机整形占4个字节,字符型占1个字节

    内存中划红线的2个16进制数分别 对应 10,20,30,40,50。每个数之间相隔4个字节。

    同理可得

    分别对应  a b c d ‘’

    还有就是与数组不同类型的不可以赋值。代码中p类型一样才可以,赋地址成功。

      

    本文由作者原创,如需转载注明出处!
  • 相关阅读:
    Git最佳实践
    Git学习笔记
    Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource
    Python实现按着文件资源管理器里的顺序获取文件列表
    python excel接口自动化测试框架
    java进行屏幕截图
    Java启动桌面应用程序
    java自建一个获取当前电脑桌面的鼠标信息
    vue收集表单数据给后端交互
    vue路由懒加载(延迟加载)的写法..
  • 原文地址:https://www.cnblogs.com/Fsiswo/p/9286948.html
Copyright © 2020-2023  润新知