zoukankan      html  css  js  c++  java
  • 指针与数组

    比较模糊的说法是:数组名就是指针

    但两者还是有区别的

    从输出结果看两者根本就是两个事物,只能说数组名神似指针,数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;那么数组名到底是什么:

      符号表是编译原理中的一个概念,应用于编译器的词法分析和语义分析两个阶段。词法分析的目标是让编译器能知道这是个数组就好了,那么语义分析阶段就需要确定这个数组的具体空间了。所以我们定义了一个数组,编译器就会在符号表中加入数组的名字a,并且根据其指定的大小,开辟一段内存空间,把这段内存空间的首地址(也就是第一个元素的地址)存入符号表,这也就是为什么我们通过数组名就可以去访问数组的元素了。编译器这么做是为了使我们使用数组更加的方便,易懂。也有人说a是一个内存地址,也没有什么不妥的,因为编译器允许我们直接把a作为数组首地址来用。数组是一种线性的数据结构,数组名指向了那一片内存。

    根据C语言的规定,数组名=数组首元素指针,所以直接可以用数组名的解引用buf来访问第一个元素,也可以使用(buf+N)来访问第N个元素。

    但是:https://blog.csdn.net/qq_21834027/article/details/84451976

    指针的加减运算的粒度是基于指针类型的长度,数组指针的长度为sizeof(数组),而数组元素指针是sizeof(单个元素)(再啰嗦一次!数组名为数组元素指针而不是数组指针)。

    指针数组:是一个数组,数组元素为指针
    数组指针:是一个指针,指向数组的指针

  • 相关阅读:
    vue项目中使用定时器,离开页面时清除定时器
    不能在循环中使用res.send(err);
    React使用require加载图片失败
    实验五 单元测试
    实验四 代码评审
    UML 建模工具的安装与使用
    结对编程 第二阶段
    结对编程
    GIT 代码版本管理
    结构化方法与面向对象化方法的比较
  • 原文地址:https://www.cnblogs.com/focusonoutput/p/12329566.html
Copyright © 2011-2022 走看看