一维数组
1 声明数组
type arrayName[arraySize];
例如: double a[10];
2 数组初始化
double a[5] = { 1, 2, 3, 4, 5 } //()内的元素个数要小于[]内的数字 //或者 double a[] = { 1, 2, 3, 4, 5 } //或者 double a[5]; a[4] = 5; //在此之前需要声明
多维数组
type arrayName[arraySize1][arraySize2]...[arraySizeN];
例如 double b[5][5][9];
二维数组
int b[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; //或者 int b[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
数组的应用
1 指向数组的指针
以数组声明 double c[5]; 为例,数组名是指向数组中第一个元素的常量指针,即 c 是指向 &c[0] 的指针
double *p; double c[5]; p = c; //将c的第一个元素地址赋值给p
*(c + 3) 指向 c[3] ,也是合法使用的;所以可以用*p、*(p + 1)、*(p + 2)等来访问数组 c
2 传递数组给函数
通过指定不带索引的数组名来传递一个指向数组的指针,以下三种方式来声明形式参数:
void function(int *param) //参数是一个指针 { ... }
void function(int param[10]) //参数是一个指定大小的数组 { ... }
void function(int param[]) //参数是一个未定义大小的数组 { ... }
调用函数,实参利用数组名
... void function(int p[]); //声明 ... int a[10]; ... function(a); //调用 ...
3 从函数中返回数组
通过指定不带索引的数组名来返回一个指向数组的指针;
如果想要从函数中返回一个一位数组,必须先声明一个返回指针的函数;
int * function() { ... }
此外,C++不支持在函数外返回局部变量的地址,除非定义局部变量为static变量,如下:
#include<iostream> using namespace std; int * function() { static int r[10]; ... //对r数组初始化 return r; } int main() { int *p; p = function(); ... return 0; }