1:有时在获得一定的信息之前,我们并不确定数组的大小。动态分配数组则可以使用变量作为数组的大小,使数组的大小符合我们的要求。
2:科普一下斐波纳契数列:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。
代码如下:

// 6.18.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; int main() { int k=1; cout<<"请输入斐波纳契数列最大阶数"<<endl; while(cin>>k,!(2<k))?? { cout<<"请输入大于2的数字"<<endl; } // int a[k]; // 不能使用变量申请栈内存,注释掉。 int *pArray = new int[k]; //动态数组创建,堆内存已经分配完毕 *pArray = 1; //斐波纳契数列第一项为、第二项为1 *(pArray+1) =1; // 以上两个语句为指针形式的数组表示方法 for(int i =2;i<k;i++) { pArray[i]=pArray[i-2]+pArray[i-1]; //数组正常的表示方法 } cout<<"请输入您想要获得的斐波纳契数列项的阶数"<<endl; int i = 0;//循环体外的i while(cin>>i,!(0<i&i<k+1)) { cout<<"请输入介于1到"<<k<<"之间的数字"<<endl; } cout<<"斐波纳契第"<<i<<"项为:"<<pArray[i-1]<<endl; delete []pArray;//释放堆内存用这种方式 return 0; }
运行结果: