#include <iostream>
#include <string>
using namespace std;
int main ()
{
int a[10]; //静态数组,堆栈上创建的,
int n;
cout << "你想要多大的数组:" << endl;
cin >> n;
int *p = (int *)malloc(n * sizeof(int));// C语言创建动态数组,
if(p!=NULL)
{
cout << "C语言malloc创建动态数组成功!" << endl;
}
int *p1 = new int[n]; // C++用new创建动态数组,
if(p1 != NULL)
{
cout << "C++语言new创建动态数组成功!" << endl;
}
free(p); //C语言用free释放动态数组,
delete[] p1; //C++语言用delete[]释放动态数组,
int *p2 = new int[10]; //没有初始化,
string *p3 = new string[10];//默认的构造函数初试化,
int *p4 = new int[10](); //初始化为0;指针指向动态创建的第一个元素,
cout << *(p4 + 3) << endl; // 输出的是0,
*p2 = 8;
*(p2 + 1) = 7;
cout << *(p2 + 1) << endl; // 输出的是7,
//动态数组只能初试化为0,
for(int* q = p4; q != p4 + 10; ++q)
{
*q = 11; // 把每一个元素定义成11,就是进行初始化,
}
for(int* q = p4; q != p4 + 10; ++q)
{
cout << *q << endl;// 输出的10个11;
}
cout << "请输入动态数组的大小:" ;
size_t m;
cin >> m;
int *q1 = new int[m];
for(int *q2 = q1; q2 != q1 + m; ++q2)
{
*q2 = 88;
cout << *q2 << endl; // 输出的是m个88,
}
delete[] p2;
delete[] p3; //delete[]就是将其删除掉,
delete[] p4; // 静态的数组是在堆栈上创建的,是局部变量,
delete[] q1; // delete[]和mew是一起出现的,忘记delete就会产生内存泄露,
return 0;
}