栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++006】new的基本用法(附:对于 为数组开辟空间 分析)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++006】new的基本用法(附:对于 为数组开辟空间 分析)

new 的基本语法:
    在堆区创建数据new 返回的是 该数据类型的指针
如何在堆区利用 new 开辟数组

开辟数组需要创建一个指针

int *p=new int;
//如果是数组,则改成
int *p[]=new int[10];
//这个开辟出来的是数组中有十个元素。

开辟之后,在代码执行之后,需要进行释放,因而需要

delete p;
//如果是数组,那么需要改成
delete[]p;

第一种是先创建一个空指针,在对空指针进行初始化。为数组开辟新空间的时候,将数组的声明放在 new 的后面。

#include
using namespace std;
int main( )
{
	double * p = NULL;
	p = new double[ 10 ];
	for ( int i = 0; i < 10; i++)
	{
		p[ i ] = i + 100;
	}
	for ( int i = 0; i < 10; i++)
	{
		cout << p[ i ] << endl;
	}
	delete[ ] p;

	return 0;
}

第二种是创建指针的时候顺便就对其进行初始化。

#include
using namespace std;
int main( )
{
	int * arr = new int [10];
	for (int i = 0; i < 10; i++)
	{
		arr[ i ] = 100 + i;

	}
	for (int i = 0; i < 10; i++)
	{
		cout << arr[ i ] << endl;

	}
	delete [ ] arr;

	return 0;
}
附:对于“为数组开辟空间”分析

(对于这个案例,我借用了一次 类 的使用,如果小白们不理解什么是 类 ,可以暂且理解为 和结构体一个用法。)


#include
using namespace std;

class CArray
{
private:
	int *vec;
	int num;

public:
	CArray(int n)
	{
		num = n;
		vec=new int[n];
	}// 构造函数,n为数组大小
	~CArray()  
	{
		cout << "折构函数:该程序已经执行完毕." << endl;
	}// 析构函数
	int length()
	{
		delete []vec;
		return num;
	}// 取数组元素个数
	int get(int i)
	{
		for (int k = 0; k < num; k++)
		{
			if (k == i - 1)
			{
				return vec[i-1];
			}
		}
	}// 取数组第i个元素
	void set(int i, int value)
	{
		for (int k = 0; k < num; k++)
		{
			if (k == i - 1)
			{
				vec[i - 1] = value;
			}
		}
	}// 设置数组第i个元素
	int getMax()
	{
		int temp=0;
		for (int i = 0; i < num; i++)
		{	
			if (temp < vec[i])
			{
				temp = vec[i];
			}
		}
		return temp;
	}// 取数组最大元素
	int getMin()
	{
		int temp = vec[0];
		for (int i = 0; i < num; i++)
		{
			if (temp > vec[i])
			{
				temp = vec[i];
			}
		}
		return temp;
	}// 取数组最小元素
	void print()
	{
		for (int i = 0; i < num; i++)
		{
			cout << vec[i] <<"  ";
		}
		cout << endl;
	}// 打印数组元素

};

int main()
{
	CArray asc(5);
	for (int i = 0; i < asc.length(); i++)
	{
		int nuu;
		cin >> nuu;
		asc.set(i,nuu);
		cout << endl;
	}
	cout<<"最大的数为"<> n;
	cout << "其值为:"< 

代码有点长,如果不想看的话可以直接看下面的,我截取了部分进行讲解。

	CArray(int n)
	{
		num = n;
		vec = new int[n];
	}// 构造函数,n为数组大小

这个是在构造函数中为数组开辟空间,使用了 new ,由于类的特殊性,并且我将 vec 设置为 private ,因而可以直接在类内进行定义,而不必重新声明(意思是,不要写以下代码:)

	CArray(int n)
	{
		num = n;
		int *vec = new int[n];
	}

此时,由于已经定义过 vec ,因此不用再次添加 int 重新定义。同时也不用解引用 * 因为输出开辟空间后的结果,就是以指针形式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号