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
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所指向的内存空间。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
