C++ 动态申请一维数组

C++ 动态申请一维数组 (无参类型)

在编程过程中,我们经常会使用数组来存放数据,因此需要直接申请足够大的空间来保证数组访问不会越界,但是即便这样,我们依然不 能 保证空间足够分配,浪费空间,而且有时也会报错所以我们需要动态申请。C语言中使用malloc和free动态分配内存和释放内存,在C++中保留了这两个函数而且使用new和delete更简单的进行内存的分配和释放。

运算符new用于内存分配的基本形式:

int *p=new int[n]; //定义一个整型指针变量p,new动态分配存放一个整数的内存空间,将首地址赋给指针变量p;

运算符delete用于释放分配内存的基本形式:

delete[] p;(首地址已经存放在指针变量p中)

下面是使用new和delete的一个例子:

动态创建

void *createArray(int n, size_t bytes)
{
	char *arr = NULL;
	arr = new char[n*bytes];//动态分配内存
	return (void *)arr;//强制转换为无参类型
}

源代码如下:

#include<iostream>
using namespace std;
void *createArray(int n, size_t bytes)
{
	char *arr = NULL;
	arr = new char[n*bytes];//动态分配内存
	return (void *)arr;//强制转换为无参类型
}
 deleteArray(char *arr)//释放分配内存
{
	delete[] arr;
	arr = NULL;
}
void input(char *arr, int n)//输入
{
	cout << "input elements of array:";
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
}
void output(char *arr, int n)//输出
{
	for (int i = 0; i < n; i++)
	{
		cout << arr[i]<<'\t';
	}
}
int main()
{
	int n;
	cout << "input n:";
	cin >> n;
    char *arr;
	arr= (char *)createArray(n, 4);//调用createArray函数,动态创建
    input(m, n);
	output(m, n);
	delete[] arr;//动态释放连续的内存空间
	arr= NULL;
	return 0;

}

在这里插入图片描述
该程序定义了一个char型指针变量arr,用new分配了一块存放一维数组的内存空间,将首地址赋给指针arr,,然后在这内存块中赋值并打印出来,最后释放arr所指向的内存空间。

猜你喜欢

转载自blog.csdn.net/qq_46144237/article/details/107344889