C++基础学习(五)之数组

一维数组

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)等来访问数组

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;
}
原文地址:https://www.cnblogs.com/haijian/p/13065051.html