用动态分配空间的方法计算斐波那契(Fibonacci)数列的前20项,并存储到动态分配的空间中
斐波那契数(Fibonacci),亦称之为斐波那契数列,又称兔子数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
用new为数组动态开辟内存时, 需要在类型名后缀上数组大小. 例如 :
int* p = new int[20];
这使new给20个整型数组元素分配了连续的内存空间,并将其首地址赋给了指针p .
其中第 1 维的界值(大小)可以是任何合法的正整数表达式, 如 :
int i= 3;
int* p = new int[i];
int* p = new int[i][3];
int* p = new int[i][3][4];
以上都是正确的, 但除了第一维其他维的界值都必须是常量, 如:
int i = 3, j = 4, k = 5;
int* p = new int[i][j];
int* p = new int[i][j][k];
都是错误的, j和k为整型变量, 并非常量.
new可以在为简单变量分配内存时, 进行初始化. 其基本形式为 :
p = new int(100); //动态分配内存空间, 并将100作为初值赋给*p
值得注意的是:
new不能对动态分配的数组进行初始化.
#include<iostream>
using namespace std;
int main() {
int* p = new int[20];
*p = 0;//第一个为0
*(p + 1) = 1;//第二个为1
for (int i = 2; i < 20; ++i) {
*(p + i) = *(p + i - 1) + *(p + i - 2);
}
for (int i = 0; i < 20; ++i) {
cout << *(p + i)<<"\t";
}
cout << endl;
delete[]p;
system("pause");
return 0;
}