C++中动态与静态数组用法

在使用c++进行数据处理时,常常会涉及到数组的使用,数组可以分为静态数组与动态数组,其中静态数组长度已被限制,往往无法满足实际需要。现在主要对动态数组的使用进行小结。
1、静态数组的声明
如声明长度为10的整数一维数组
int array[10] ;
其他类型的一维数组声明类似,不再进行详述。
注: int array[变量]  程序报错:变量必须是个常量
2、动态数组的声明及使用
原理:动态数组是通过云算符new进行创建,而数组变量实际上是个指针,因此利用new符号创建的数组,可以当成一般数组对待。
(1)如何创建动态数组并赋值


#include<iostream>
#include<vector>
using namespace std;
void main()
{
	int a = 10;
	double *doublePtr;//声明数组类型指针:double类型的数组指针
	doublePtr = new double[a];//开辟相应的内存空间
	for (int i = 0; i < a; i++)//最后对其进行赋值
	{
		doublePtr[i] = a - i;
	}
}


(2) 二维动态数组的申明与使用
1.静态二维数组的申明,较为简单,格式如下:
类型 变量名[][]
如double array[2][3];
这样就是说其行列明确,否则出错。
2. 动态二维数组的申明
以申明double array[m][n]为例进行讲解
double  **array;
array=new double *[m];//申明行数
for(int i=0;i<m;i++)
{
            array[i]=new double[n];//申明每一行的列数

即可完成,即使用了两次一维动态数组申明。

#include <iostream>
using namespace std;
#include<string>

void main()
{
	int m = 5;
	int n = 2;
	double **array;
	array = new double *[m];//先定义有多少行 有5行
	for (int i = 0; i < m; i++)
	{
		array[i] = new double[n];//再定义每一行有多少列  有6列
	}
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			array[i][j] = 1;
		}
	}
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << array[i][j] << "\t";
		}
		cout << endl;
	}
	system("pause");
}


(3)如果一个二维数组作为一个函数中参数,该如何使用,思想是容器的容器
如求取一个二维数组中所有元素之和的函数

#include<iostream>
#include<vector>
using namespace std;
double  sum(const vector<vector<double>> vec_vec_a)
{
	double m_sum = 0;
	for (int i = 0; i < vec_vec_a.size(); i++)//行数
	{
		for (int j = 0; j < vec_vec_a[i].size(); j++)
		{
			m_sum += vec_vec_a[i][j];
		}
	}
	return m_sum;
}

void main()
{
	vector<double> a, b;//a b的容器尺寸可以不一样大
	a.push_back(1);
	a.push_back(1);
	a.push_back(1);

	b.push_back(2);
	b.push_back(2);
	vector<vector<double>> c;
	c.push_back(a);
	c.push_back(b);


	for (int i = 0; i < c.size(); i++)
	{
		for (int j = 0; j < c[i].size(); j++)
		{
			cout << c[i][j] << "\t";
		}
		cout << endl;
	}
	cout << sum(c) << endl;
	system("pause");
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云实验室lab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值