一个书上的例子..请大家解释下,最好能详细点。谢谢啊
//:co4:CLib.cpp{0}
// Implementation of example C-like library
// Declare structure and functions:
#include "CLib.h"
#include <cstdlib>
#include <iostream>
#include <cassert>
using namespace std;
using namespace std;
//Quantity of elements to add
// when increasing storage:
const int increment=100;
void initialize(CStash* s,int sz){
s->size=sz;
s->quantity=0;
s->storage=0;
s->next=0;
}
int add(CStash* s,const void* element){
if(s->next >= s->quantity)//Enough space left?
inflate(s,increment);
//Copy element into storage,
// starting at next empty space:
int startBytes=s->next * s->size;
unsigned char* e=(unsigned char*)element;
for (int i=0;i<s->size;i++)
s->storage[starBytes +i]=e[i];
s->next++;
return (s->next-1);//Index number
}
void* fetch(CStash* s,int index) {
//Check index boundaries:
assert(0<=index);
if(index >=s->next)
return 0;//To indicate the end
//Produce pointer to desired element:
return &(s->storage[index * s->size]);
}
int count(CStash* s){
return s->next; //Elements in increase){
assert(increase >0);
int newQuantity=s->quantity+increase;
int newBytes =newQuantity * s->size;
int oldBytes =s->quantity * s->size;
unsigned char* b=new unsigned char[newBytes];
for (int i=0;i<oldBytes;i++)
b[i]=s->storage[i];//Copy old new memory
s->storage=b; //Point to new memory
s->quantity=newQuantity;
}
void cleanup(CStash* s){
if(s->storage !=0){
cout <<"freeing storage" <<endl;
delete[]s->storage;
}
system("pause");
}///:~
这个发的不是很好,大家复制到TXT里看吧...谢谢大哥门,
我刚学VC++。。
谢谢!!
分我也不大会用。。谢谢打家啊