ca32a_demo_c++创建动态数组

/*
ca32a_demo_c++创建动态数组20200127
静态是在堆栈上创建的,动态实在堆(heap)上创建的
堆(heap)-自由存储区(free store)-内存的一个区域
c语言:malloc创建和free释放
c++语言:new和delete()
动态数组的定义
初始化动态分配的数组
const对象的动态数组
允许动态分配空数组
动态空间的释放
动态数组的使用

*/

//静态数组,是在堆栈上创建的,局部的自动变量。当main函数结束时,堆栈上的局部的自动变量会自动清除

动态数组有什么作用呢?

如下:

https://blog.csdn.net/txwtech/article/details/104094336

/*
ca32a_demo_c++创建动态数组20200127
静态是在堆栈上创建的,动态实在堆(heap)上创建的
堆(heap)-自由存储区(free store)-内存的一个区域
c语言:malloc创建和free释放
c++语言:new和delete()
动态数组的定义
初始化动态分配的数组
const对象的动态数组
允许动态分配空数组
动态空间的释放
动态数组的使用

*/
#include <iostream>

using namespace std;

int main()
{
	int a[10];//静态数组,堆栈上创建的
	int n;
	cout << "您想要多大的数组: " << endl;
	cin >> n;

	int *p=(int *)malloc(n*sizeof(int)); //c语言:malloc创建和free释放
	if (p != NULL)
	{
		cout << "C语言:malloc创建动态数组成功!" << endl;
	}

	int *pia = new int[n];
	if (pia != NULL)
	{
		cout << "c++:new创建动态数组成功!" << endl;
	}
	free(p);//释放c语言创建的动态数组指针
	delete[] pia;//删除数组指针
	//getchar();
	return 0;
}
#include <iostream>
//忘记delete会产生内存泄漏
using namespace std;

class Dog
{

};

int main()
{
	int a[] = { 1,2,3,4,5 };//静态数组,是在堆栈上创建的,局部的自动变量。当main函数结束时,堆栈上的局部的自动变量会自动清除
	int *pia = new int[10];//没有初始化
	string *psa = new string[10];//默认的构造函数初始化
	delete[] psa;
	Dog *pDog = new Dog[10];
	int *pia2 = new int[10]();//内置类型动态初始化为0;
	cout << *(pia2 + 2) << endl;
	*pia = 9;
	*(pia + 1) = 8;
	*(pia + 3) = 6;

	cout << *(pia + 1) << endl;
	cout << *(pia + 3) << endl;
	for (int* q = pia; q != pia + 10; ++q)
	{
		*q = 11;
	}
	for (int* q = pia; q != pia + 10; ++q)
	{
		cout << *q << endl;
	}
	for (int i=0;i<10;i++) //普通循环
	{
		cout << *(pia+i) << endl;
	}
	const int *pci_bad = new const int[100]();//后面的小括号进行初始化0,不能修改该,没有什么用处。
	//char arr[0];//静态数不能分配0
	char *cp = new char[0];//动态数可以分配0
	cout << "请输入动态数组的大小: ";
	size_t n;
	cin >> n;
	int *p = new int[n];
	for (int *q = p; q!=p + n; ++q)
	{
		*q = 22;
		cout << *q << endl;
	}
	delete[] p;//忘记delete会产生内存泄漏
	delete[] cp;
	delete pia2;
	delete[] pci_bad;
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>

using namespace std;

int main()
{
	const char *pc = "a very long literal string";
	const size_t len = strlen(pc);
	for (size_t ix = 0; ix != 8; ++ix)
	{
		char *pc2 = new char[len + 1];//c语言方式动态创建,处理c风格字符串
		strcpy(pc2,pc);

		cout << pc2<< endl;

		delete[] pc2;
		//cout << "PC2:" << endl;
	}
	string str("a very long literal string");
	for (size_t ix = 0; ix != 8; ++ix)
	{
		string str2 = str;
		cout <<"c++: "<< str2 << endl;

		//delete[] pc2;
		//cout << "PC2:" << endl;
	}

	return 0;
}
发布了360 篇原创文章 · 获赞 186 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/txwtech/article/details/104095831