`
coolerbaosi
  • 浏览: 725286 次
文章分类
社区版块
存档分类
最新评论

C++之数组、指针、引用

 
阅读更多

数组:

数组是由固定数目且类型相同的元素所组成的数据结构。在C++中一维数组的声明格式如下:Type name[length],其中length并不是必须元素,如果length显式给出,则显式的说明了数组的长度,并且可以全部或者部分的给出数组元素的初始值,如果只给出部分数组元素,则未给出的数组元素默认赋初值为“0”;如果length没有显式的给出,则其数组元素必须全部给出并赋初值。二维及多维数组的声明格式为:Type name[expression1] [expression2]...。以二维数组为例expression1和expression2分别表示数组的行数和列数。与一维数组相似,如果显式的给出了行数和列数,则数组元素可以全部或部分给出,但是二维数组中可以省略行数,但不允许省略列数。当省略行数的时候必须给出全部的元素并赋初值。

注意:C++字符数组中要注意数组的长度与元素个数的关系。在C++中字符串以“\0”为字符串结束的标志,虽然在字符串中为显式给出但是它在数组中仍然占有一个字节的存储空间。如 char S1[ ]="abcd",该数组的长度应该为5,占有5个字节的存储空间而不是4个。这也就决定了字符数组的初始化有两种方式,一种是:char S1[ 5]="abcd",另一种方式是 char S1[4]={'a','b','c','d'}

指针:

C++中指针和数组的关系是密不可分的,指针指向的是一个内存地址,我们可以简单地理解为指针也是一个存储空间,只不过这个存储空间中存放的不是变量的值,而是一个变量的地址。说指针和数组密不可分是因为数组名本身也是一个指针,只不过它指向的是数组第一个元素的地址,如果用一个数组名给一个相同类型的指针赋值的话,则在指向数组元素的作用上两者是一样的。例如:int S1[3]={1,2,3}; int *P;P=S1;则P=S1表示数组名S1指向的是数组元素“1”的地址,指针P指向的也是数组元素“1”的地址。又由于数组的相邻元素在内存中时连续紧邻排列的,所以下列各式:*(P+1)、S[1]、P[1]、*(S1+1)表示的是同一个元素,即都是元素“2”,同时这几个式子也说明指针是可以和整型数进行运算的,但是指针和指针之间除了赋值运算外不可以进行运算。

引用:

引用是给某个对象建立一个别名。建立引用后对引用所进行的任何操作实际上是对所代表的数据对象的操作。

引用的一个重要用途是传递函数参数。用引用做函数形参有两方面的作用:(1)可以达到类似于“传地址”的效果,避免C++“传值”参数传递方式不能通过形参改变实参的不便(2)对于较大的对象,可以提高参数传递的效率。因为引用的建立,要比对象间的赋值要快。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics