所在位置:首页 > 技术社区 > 技术新闻 >

北大青鸟:计算机技术中指针与数组的区别与共性

时间:2016-06-03 14:28:34 来源:北大青鸟 作者:小狮 已有人浏览

导语

对于计算机初学者来说,有些内容是非常难以分清楚的,比如说指针和数组,这里北大青鸟就来跟大家聊一聊指针和数组之间的区别与共

对于计算机初学者来说,有些内容是非常难以分清楚的,比如说指针和数组,这里北大青鸟就来跟大家聊一聊指针和数组之间的区别与共性。

什么是指针

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。就是说只要是个计算机系统,包括嵌入式、单片机都有内存,内存是用来存储运行时的参数、变量和代码的。有了内存必然会对内存单元进行编址,要不然怎么去访问各个内存单元呢?所有的内存单元的编址都是一个平坦模式,线性编址。就是从零开始到最大内存单元减一,它本身没有一行一行的那个直观概念。其实这个从0开始的编址号就是内存的地址,只是一般来说你访问到的内存不是直接从0开始,它是从一个偏移开始。比如一个32M的内存,它的偏移可能从0x80000000,所以内存地址就是0x80000000 ~ 0x82000000,他们之间的任何一个地址都对应一个内存单元。

搞清楚了内存地址,那么就基本理解了指针。对于一个32位系统来说,指针就是用32位无符号整数,它用来存放的就是某个内存地址编号,对这个指针的访问,就是针对这个内存单元的存取。

什么是数组

所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。比如一个整型数组,就是多个连续的整型数据组成的一块数据,同理多个连续相同的结构体也可以组成一个数组。既然数组是在内存中存在,那么就是说这个数组集合有一个开始的地方,而这个开始的内存单元编号就是这个数组的首地址。任何一个数组都是这样的,他们在内存在占用一定存储单元,开始的内存地址就是这个数组的首地址。对于C语言来说,数组的名字就代表了这个首地址。

指针与数组的共性

指针存的是一个内存地址,而数组代表的也是一个数组在内存中的首地址,也就是他们都是一个地址。

指针与数组的不同

指针是一个变量,我们可以随时给他赋不同的地址,只要这个地址的类型相同就可以,比如一个指向整型的指针,只要是整型变量的地址,都可以赋值给他。而数组则不同,它不是一个变量,所以一旦编译后在它的生命周末内地址就不能再变了。事实上,编译器已经将他编译成了一个地址,没有变量的概念了,可以把它看做是一个常指针(const TYPE *p)。

其实总结起来也简单,首先他们都是地址,其实就是指针可以指向不同的地址,而数组是一个常指针,不能被重新赋值,它就是数组存放的首地址,从这个角度来说,它跟函数名有类似的性质,被编译器编译后,他们都是一个地址而已,既然是地址不是变量,当然就不能被赋值了。

开班信息

Java就业班 01-22 立即报名
WEB基础班 02-28 立即报名
Python基础班 01-22 立即报名
架构师基础班 02-28 立即报名
ACCP基础班 01-22 立即报名
网络营销师 02-28 立即报名
ACCP就业班 01-22 立即报名
Java基础班 02-28 立即报名

申请免费线下试听名额

姓 名:

手 机:

课 程: