zoukankan      html  css  js  c++  java
  • C语言-数组的深入学习

    深入学习一下数组
    1、从内存角度来讲:数组变量就是一次分配多个变量,而且这些变量的地址是连续的,也就是存放这些变量的存储
    单元是依次相连接的。而且这多个变量必须单独访问,不可以一起访问的。因为他们的地址彼此相连,所以使用指针
    访问这些变量就很容易了。
    2、从编译器角度来讲:数组变量也是变量,和普通变量和指针变量并没有什么本质不同。变量的本质就是一个地址,
    这个地址在编译器中决定具体数值,具体数值和变量名绑定,变量类型决定了这个地址的延续长度。
    3、数组中几个关键符号(a  a[0]  &a  &a[0])的理解
    (1)、a就是数组名。a做左值时表示整个数组的所有空间(10 * 4 = 40字节),又因为C语言规定数组操作时要独
    立单个操作,不能整体操作数组,所以a不能做左值;a做右值时表示数组首元素(数组的第一个元素,也就是a[0])
    的首地址(首地址就是起始地址,就是4个字节中最开始第一个字节的地址)。a做右值等同于&a[0];
    (2)、a[0]表示数组的首元素,也就是数组的第0个元素。做左值时表示数组第0个元素对应的内存空间(连续4字节);
    做右值时表示数组第0个元素的值(也就是数组第0个元素对应的内存空间中存储的那个数)
    (3)、&a就是数组名取地址,字面意思就是数组的地址。&a不能做左值(&a实质是一个常量,不是变量,因此不可以
    赋值,所以自然不能做左值。);&a做右值时表示整个数组的首地址。
    (4)、&a[0]字面意思就是数组第0个元素的首地址([]的优先级要高于&,所以a先和[]结合再取地址)。做左值时表示
    数组首元素对应的内存空间,做右值时表示数组首元素的地址(首地址就是起始地址,就是4个字节中最开始第一个字
    节的地址)。
    做右值时&a[0]等同于a。
    总结:
    (1)、&a和a做右值时的区别:&a是整个数组的首地址,而a是数组首元素的首地址。这两个在数字上是相等的,但是
    意义不相同。意义不同就会导致他们在参与运算的时候有不同的表现。
    (2)、a和&a[0]做右值时意义和数值完全相同,完全可以相互替代。
    (3)、&a是常量,不能做左值。
    (4)、a做左值代表整个数组所有空间,所以a不能做左值。

  • 相关阅读:
    Interleaving String
    Binary Tree Inorder Traversal
    Unique Binary Search Trees II
    Unique Binary Search Trees
    .Net(C#)访问X509证书加密的Webservice(六)--WSE 2来订制web service
    UpdatePanel控件
    在InfoPath中如何获取user profle
    Sharepoint Webpart 自定义属性
    Sharepoint 服务端对象模型增加项到文档库
    从Sharepoint的List中获取不重复的item
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11367795.html
Copyright © 2011-2022 走看看