数组是什么类型?

原创 2013年12月05日 11:18:51

形如int a[10]的整数数组,a[3]表示的是一个int类型的数值,那么a的类型是什么呢?

对于一个数组来说,数组名是整个数组的首地址,同时也是数组第一个元素a[0]的地址,它是一个指针常量,它的类型取决于数组的类型,如果数组是int型,那么它就是一个指向int型的常量指针,如果数组是char,那么是指向char型的常量指针,注意这是指针常量,不是指针变量,常量的值是不能改变的,不能被赋值。

数组名+整数(如a+3):a是一个指向XX类型的指针,这个3根据数组的类型的长度值来调整,+3的结果是指向另一xx类型的指针,表明它指向的元素是从数组的第一个元素向后面移动3个xx类型长度的位置,也就是指向a[3],等价于&a[3]


但是,指针和数组名不是一回事

int a[10];

int *b;

a和b都可以进行间接访问,以及下标引用操作,但是他们区别很大。

声明一个数组时,编译器会根据声明所指定的元素数量以及类型,为数组保留内存空间。然后再创建数组名,数组名的值是一个常量:指向这段内存空间的首地址

声明一个指针变量时候,编译器为指针变量本身保存内存空间,并不为任何整型变量保留内存空间,区别如下

指针变量如果没有初始化,它指向的地址是随机的,也就是图中?的意思。所以*b是会访问内存中一个不确定的地址。而*a是访问数组第一个元素

同时,a是一个指针常量,b是一个指针变量,可以b++,不可以a++

相关文章推荐

JAVA 数组类型

本页面更新日期: 2016年06月23日 数组是编程语言中最常见的一种数据结构. 可用于存储多个数据, 每个数组元素存放一个数据, 可通过数组元素的索引来访问数组元素/赋值/取出元素的值. ...
  • tmdlife
  • tmdlife
  • 2016年06月23日 16:06
  • 1721

java定义数组的三种类型

三种定义数组的格式如下: int[] arr1=new int[10]; int[] arr2={1,2,3,6}; int[] arr3=new int[]{1,2,3,4,5,6,7,22...

数组是什么?

最近在学习数据结构中的矩阵压缩存储的时候涉及到了许多有关数组的操作。在使用数组的时候更是对数组这个东西不知所云,以下是我对其的一下理解。 首先第一个问题:数组是一种类型吗?       想来回答这个问...
  • NEXTLJP
  • NEXTLJP
  • 2016年10月29日 11:22
  • 1099

【C++】数组类的定义(类模板)

一、为什么要引进类模板 减少代码重用。 这个概念在C++里有很多 二、类模板与模板类 (1)类模板的含义 类模板的意思是,按不同的方式重复使用相同的代码。 一个类模板(也称为类属类或类生成...

C++ 类对象数组

对象数组是指一个数组元素都是对象的数组 创建对象数组的时候只能调用默认构造函数初始化对象...

关于数组的基本数据类型和引用类型

关于数组的基本数据类型和引用类型

网易0912 暗黑字符串

题目的大意:   一个字符串只能由‘A’、‘B’、‘C’三个字母组合而成;若在字符串中如果‘A’‘B’‘C’三个字符任意组合出现,则此字符串为清澈的,否则为黑暗的。如“AABBCCABAA”因为包含“...

valgrind--memcheck原理

原文:http://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine

java数组 类型

  • 2013年06月04日 14:14
  • 162KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组是什么类型?
举报原因:
原因补充:

(最多只允许输入30个字)