以下是靜態記憶體 & 動態記憶體的使用
靜態記憶體是由工程師自行定義Array的大小
動態記憶體則是將Array的大小設置成指標
讓工程師可以自行變更
1. 靜態記憶體:
#include <iostream>
#include <string.h>
#include "S0905.h"
using namespace std;
/* 費氏數列 */
#define MaxLenth 8
struct IntArray
{
int size;
int data[MaxLenth];
};
void IntArray_Init(IntArray & array)
{
array.size = MaxLenth;
for(int i = 0; i < array.size; i ++)
array.data[i] = 0 ;
}
void IntArray_output(const IntArray array)
{
for(int i = 0; i < array.size; i ++)
cout << array.data[i]<< " ";
cout << endl;
}
void ToFibonacci(IntArray & array)
{
array.data[0] = 0;
array.data[1] = 1;
for(int i = 2; i < array.size; i ++)
array.data[i] = array.data[i-2] + array.data[i-1];
}
void S0905(void) {
IntArray A, B;
A.data[0] = 99;
IntArray_Init(A);
ToFibonacci(A);
B = A;
IntArray_output(B);
}
2. 動態記憶體:
#include <iostream>
#include <string.h>
using namespace std;
/* 費氏數列 */
#define MaxLenth 8
struct IntArray
{
int size;
int * data;
};
void IntArray_Init(IntArray & array, int size)
{
array.size = size;
array.data = new int[size] ;
for(int i = 0; i < array.size; i ++)
array.data[i] = 0;
}
void IntArray_Delete(IntArray & array)
{
array.size = 0;
if(array.data != NULL)
{
delete[] array.data ;
array.data = NULL;
}
}
void IntArray_output(const IntArray & array)
{
for(int i = 0; i < array.size; i ++)
cout << array.data[i]<< " ";
cout << endl;
}
void ToFibonacci(IntArray & array)
{
array.data[0] = 0;
array.data[1] = 1;
for(int i = 2; i < array.size; i ++)
array.data[i] = array.data[i-2] + array.data[i-1];
}
void S0906(void) {
IntArray A, B;
IntArray_Init(A, 12);
ToFibonacci(A);
B = A;
IntArray_output(B);
}
沒有留言:
張貼留言