#include "stdafx.h"
#include <iostream>
using namespace std;
// 数据赋值
void GetData(int **Data)
{
int i = 10;
int j = 20;
int k = 30;
for (int nRow = 0; nRow < 5; nRow ++)
{
Data[nRow][0] = i;
Data[nRow][1] = j;
Data[nRow][2] = k;
i ++;
j ++;
k ++;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int** pRecord = NULL;
pRecord = new int*[5]; //int*[5] 表示一个有 5 个元素的指针数组
std::cout << &pRecord << endl;
for (int i = 0; i < 5; i++)
{
pRecord [i] = new int [3]; // 分配能够存放 3 个整数的数组区域
//int *p = new int (3) 分配一个 int 类型大小的区域 并将 3 存入其中
}
// 这里将 pRecord 作为一个指向指针的指针,它指向一个包含 5 个元素的指针数组,并且每个元素指向一个有 3 个元素的数组,这样就构建了一个 5 行 3 列的数组
for (int i = 0; i < 5; i++) // 初始化
{
for (int j = 0; j < 3; j++)
{
pRecord[i][j] = 0;
}
}
GetData(pRecord);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
std::cout << &pRecord[i][j] << std::endl;
std::cout << pRecord[i][j] << std::endl;
}
}
for (int i = 0; i < 5; i++)
{
std::cout << &pRecord[i] << std::endl;
delete []pRecord[i];
}
std::cout << &pRecord << std::endl;
delete [] pRecord; //delete pRecord 只释放了 pRecord 指向数组的第一个元素
cin.get();
return 0;
/*
1. int *a = new int;
delete a; // 释放单个 int 的空间
2.int *a = new int[5];
delete [] a; // 释放 int 数组空间
*/
}