C++之数组、指针、引用
2012-03-25 21:53
281 查看
数组:
数组是由固定数目且类型相同的元素所组成的数据结构。在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)对于较大的对象,可以提高参数传递的效率。因为引用的建立,要比对象间的赋值要快。
数组是由固定数目且类型相同的元素所组成的数据结构。在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)对于较大的对象,可以提高参数传递的效率。因为引用的建立,要比对象间的赋值要快。
相关文章推荐
- C++引用数组,函数指针,函数指针数组,结构体数组等学习
- c++引用和const 用法 数组 指针
- C++中数组名、指针的引用传递
- C++之指针与引用,函数和数组
- C/C++——声明一个到字符的指针,包含10个整数的数组,到包含10个整数的数组的引用,到字符串的数组的指针,到字符的指针的指针...
- 动态创建二维vector数组 C和C++ 及指针与引用的区别
- 等级考试二级C++考点分析之数组、指针与引用
- 动态创建二维vector数组 C和C++ 及指针与引用的区别
- C++学习笔记2--函数重载 复杂的数据 内存对齐 指针数组 结构与指针 传值传址传引用 联合枚举类型别名
- C++中引用,指针和数组的比较
- C++ 数组的指针,指针的数组, 数组引用
- lua使用C++的指针、引用、值、数组
- C++编程实例-数组、指针及引用
- 从零开始学C++之从C到C++(二):引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
- C++参数传递,数组引用传递,保护数组退化为指针
- C++中的指针和引用,结合数组
- C++参数传递,数组引用传递,保护数组退化为指针
- c++中的数组和指针,引用
- C++指针、数组、引用、变量作函数参数