C++学习第一天

参考C++编程思想学了一些

此处是学习的代码

#include

#include

#include

using namespace std;

#define SZ 20

struct holder

{

private:

int a[SZ];

public:

void initialize();

struct pointer {

private:

holder* h;

int* p;

public:

void initialize(holder* H);

void next();

void previous();

void top();

void end();

int read();

void set(int i);

};

friend holder::pointer;//友元结构体,先进行定义了,若没有定义,则相当于对它的声明,若变量中含有还未定义的结构则一定要在前面声明

};

void holder::initialize()

{

memset(a, 0, SZ * sizeof(int));

}

void holder::pointer::initialize(holder* H)

{

h = H;

p = h->a;

}

void holder::pointer::next()

{

if (p < &(h->a[SZ - 1])) p++;

}

void holder::pointer::previous()

{

if (p > & (h->a[0])) p--;

}

void holder::pointer::top()

{

p = &(h->a[0]);

}

void holder::pointer::end()

{

p=& (h->a[SZ - 1]);

}

int holder::pointer::read()

{

return *p;

}

void holder::pointer::set(int i)

{

*p = i;

}

int main()

{

holder h;

holder::pointer hp, hp2;//一定要这么写不然是找不到的

int i;

h.initialize();

hp.initialize(&h);

hp2.initialize(&h);

for (i = 0; i < SZ; i++)

{

hp.set(i);

hp.next();

}

hp.top();

hp2.end();

for (i = 0; i < SZ; i++)

{

cout << hp.read() << " " << hp2.read() << endl;

hp.next();

hp2.previous();

}

//cout << h.a[0] << endl; 一样不可访问

}

你可能感兴趣的:(C++学习第一天)