• 数组的深入理解


    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类型一样才可以,赋地址成功。

      

    本文由作者原创,如需转载注明出处!
  • 相关阅读:
    UNIT THREE
    UNIT TWO
    UNIT ONE
    实验九 根据材料编程
    实验五 编写、调试具有多个段的程序
    实验 四 [bx]和loop的使用
    实验二 用机器指令和汇编指令编程
    实验三 编程、编译、连接、跟踪
    实验一 查看CPU和内存,用机器指令和汇编指令编程
    汇编语言第5~8章知识总结
  • 原文地址:https://www.cnblogs.com/Fsiswo/p/9286948.html
Copyright © 2020-2023  润新知