c++ 数组的声明(1)

今天讨论静态数组的声明。

首先给出四个声明:

int *ptrs[10];
int *refs[10] = / ? /;
int (*Parray)[10] = &arr;
int (&arrRef)[10] = arr;

就我理解,c++里应该这样看待一个变量的声明:

如果有括号,把括号内的内容看做一个整体,然后从右往左阅读。最右边的声明元素即是声明对象的本质。

数组声明,一般名字左侧是数组所包含元素内容,右侧是数组的大小。

所以:

  1. 没有括号,所以从右往左阅读。首先发现ptrs是个[10],也就是数组,其中的元素是int *。
  2. 从右往左阅读。refs是个[10],但是因为引用不是对象,不可能有数组,所以这个是错误的。
  3. 把括号内的元素看成一个整体,发现*Parray是一个int [10],那么parry就是一个有十个int变量的数组的指针。
  4. 同理,arrRef是一个有十个int变量的数组的引用。

小测试:猜猜下面表达式的作用?

int *(&arry)[10] = ptrs;

答案:易猜得arry是一个int *[]的引用。该表达式是将该数组的第十个对象赋值为ptrs。

今天就整理到这里。

时间: 2024-08-28 05:45:12

c++ 数组的声明(1)的相关文章

数组的声明

数组的声明和初始化语法如下: 数据类型[ ] 数组名 = new 数据类型[长度]; 注意:数组名像变量名一样要遵循标识符的命名规则:长度必须是整数 数组经过初始化以后,数组元素有默认的初始值, double 类型为 0.0 , int 类型为 0 , char 类型为 'a' , bool 类型为 false , string 类型为 null . 举例: string[]friends=new string[2]; friends[0]="A"; friends[1]="

关于Delphi中二维数组的声明和大小调整(对非基本类型数据,小心内存泄漏)

这是一个实例: procedure TMainForm.Button1Click(Sender: TObject);var  arr:array of array of string;begin  setlength(arr,2,3);  arr[1,2]:='this is a test';  setlength(arr,0,0);  setlength(arr,4,5);  showmessage(arr[1,2]); end; 声明一个二维数组的方法是用 array of array of

关于offsetWidth,offsetHeight,offsetTop,offsetLeft和二维数组的声明

offsetWidth,offsetHeight,offsetTop,offsetLeft 为只读状态,返回的值是int形式 只读形式即不能通过修改其值的大小. 想要修改某元素的这些值的大小(width,height,top,left) 可以使用一下方法 elementId.style.width = '20px'; elementId.style.height = '40px'; elementId.style.left = '20px'; elementId.style.top = '10p

C++二维数组讲解、二维数组的声明和初始化

我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点.而所有的数据都是存储在一条线上.如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里. 我们把二维数组的两个下标分别称为行下标和列下标,在前面的是行下标,在后面的是列下标. 那么什么时候要用二维数组呢?一般有两种情况,一种是描述一个二维的事物.比如用1

C#数组的声明方式

C#数组的五种声明方式 一.声明一个未经初始化的数组引用,以后可以把这引用初使化为一个数组实例 int[] intArray; intArray = new int[10]; 注:数组的引用必须以相同或相关类型实例化,数组初使化默认值,值类型为0,引用类型为null 二.声明一个数组引用并对他进行初使化,该数组引用被立即赋予一个数组的新实例. int[] intArray = new int[10]; 三.声明一个数组,初使化数组引用,并给数组元素赋值 int[] intArray = new

C#之数组的声明

C#一维数组的声明方式 int[] myArray; string[] myStrArr; 但是在访问数组之前必须初始化. C#数组的初始化方式有两种,第一种是在声明数组的时候为数组的元素赋初值: int[] myArray = { 5, 9, 15, 22, 30 };string[] myStrArr = { "diagram", "league", "brambling" }; 另一种方式需要在声明数组时指定数组的大小(即数组的长度,数组元

C#之锯齿数组的声明和遍历(数组的数组)

1.何为锯齿数组? 数组中每行的元素个数不相同. 2.声明锯齿数组. 声明数组的数组,其语法主要在数组的声明中制定多个方括号对,如: int[][] ArrayName; 第一个括号对中设置该数组的行数,第二个括号对定义各行的元素个数,先设置为空.因为每行中包含的元素个数不相等. 还有以下声明: 初始化包含其他数组的数组(也称子数组),然后依次初始化子数组. ArrayName = new int[2][]; ArrayName = new int[3]; ArrayName = new int

Java初学者:数组,声明以及初始化

今天我们说一下java里面的数组,数组在编程语言里的意思,相当于离散数学里面的集合,其意义几乎完全一样,只有一点区别,离散里有无穷集合,比 如,实数集,但是在java里是不存在无穷集合的.在java里,数组就是一些数据的集合.作为我们这些菜鸟,大多数情况下见到的数组,其中的数据都属于 同一类型.少数情况下不属于同一类型,那很有可能发生了多态现象,而且在访问数组元素的方法时,很可能产生了动态绑定,这些我们以后再说. 好了,让我们目前先认为数组里的元素都属于同一类型.那么,怎样声明以及初始化一个数组

7.Java二维数组的声明、初始化和引用

二维数组的声明.初始化和引用与一维数组相似,这里不再详讲. 二维数组的定义 type arrayName[ ][ ]; type [ ][ ]arrayName; 只是形式上的差别,大家可以根据自己的习惯来选择. 二维数组的初始化 1.静态初始化     int intArray[ ][ ]={{1,2},{2,3},{3,4,5}}; Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同. 2.动态初始化 1) 直接为每一维分配空间,格式如