题目:
二维数组是数组的数组,而数组可以通过指针动态创建。如果动态创建的数组元素也是指针,数组中的每个元素就都可以存储数组的地址。使用这个概念,创建一个数组,其中包含三个数组指针,每个数组都可以包含六个int类型的值。把第一个整数数组的值设置为1到6,下一个数组的元素值设置为第一个数组元素的平方,第三个数组的元素值设置为第一个整数数组元素的立方。输出这三个数组的内容,再释放已分配的内存。
答案:
#include <iostream>
#include <iomanip>
#include <cmath>
using std::cout;
using std::endl;
using std::cin;
using std::setw;
void main() {
const int arrays = 3;
const int elements = 6;
int** ppint = new int*[arrays];
int i=0, j=0;
for (i = 0; i < arrays; i++) {
ppint[i] = new int[elements]; // 等价于 *(ppint + i) = new int[elements];
for (j = 0; j < elements; j++) {
ppint[i][j] = pow((j+1), (i+1)); // 等价于 *(*(ppint + i) + j) = pow((j+1), (i+1));
}
}
for (i = 0; i < arrays; i++) {
for (j = 0; j < elements; j++) {
cout << setw(4) << *(*(ppint + i) + j);
}
cout << endl;
}
for (i = 0; i < arrays; i++)
delete [] *(ppint + i);
delete [] ppint;
}
输出结果:
1 2 3 4 5 6
1 4 9 16 25 36
1 8 27 64 125 216