.


:




:

































 

 

 

 





, struct . :

struct __ {

_1;

_N;

_1;

_K;

};

 

__ (), ; ; , ( , , ..).

struct , . address:

struct address {

char* name; //

long number; //

char* street; //

char* town; //

char state[2]; //

int zip; //

};

, - address. (name, number, street, town, state, zip), . : - , ? , . , .. struct adr {adr z;}; ++, struct adr {adr* z;}; .

address address, address, address, address, .. :

int i=2; // i int.

int *pi = &i, ari[3] = {1,3,7}, &rfi = i; /* pi int; ari int; rfi int.*/

address Nik={"Jim Dandy", 61, "South Street", "New Providence", {N,J}, 1974};./* Nik address. name, street, town "Jim Dandy", "South Street", "New Providence" . number, zip 61 1974 . state Nik N, J */

address *pNik = &Nik, ArAddr[3], &rfNik= Nik; /* pNik address; ArAddr address; rfNik address.*/

, Nik, , . name Nik , "Jim Dandy"; number Nik 61 ..

, . struct , :

struct { char N[12]; int value;} XX, Y[7], *pXX; /* XX, Y, . N value.*/

, , XX Y .

. ,

( ) ( )
_._::__ _. __
__-> _::__ __-> __
(*__). _::__ (*__).__

, , .

(), () ( ) . , , . _ , _.__, __->__, (*__)._ , :

Nik.name // char* , char*

Nik.name = ; /* name char* Nik , */

Nik.number = 34; /*C number Nik 34. Nik.number long */

ArAddr[0].number =75; /*C number ArAddr[0] 75. ArAddr[0].number long */

pNik->street = ; /* C Nik street Nik. street char*, pNik->street char*. street Nik , .*/

(*pNik).zip = 3456; /* , , , zip 3456. (*pNik).zip int. */

Nik.

cout << "\n : "<< Nik.name << "\t : "<<Nik.number<<"\t : "<<Nik.street;

cout<<\t :<<Nik.state<<"\t : "<<Nik.state[0]<< Nik.state[1]<<"\t : "<<Nik.zip;

 

: : 34 : : New Providence : NJ : 3456

cout<< Nik , cout , address. cout address. .

, , , .. . Nik.number, number Nik, ArAddr[0].number, number ArAddr[0] , ( 34, 75).

return. :

address current = {" ", 31, " ", "", {R,U}, 3900};

 

address set_current(address next)

{

address prev = current;

current = next;

return prev;

}

 

void main (){

address Nik={"Jim Dandy", 61, "South Street", "New Providence", {N,J}, 1974}, f2;

f2 = set_current(Nik);

}

, . next , Nik . , next , Nik. set_current () address , address, prev. prev , f2 , .. f2 , . ( prev f2).

. , .

,

(&, *, sizeof(), =, () ->, *, ->*,::). , , .

& , . , .

( ) * . , .

() -> . .

sizeof () , , . , . , + ( , ) + , (. . 4). , sizeof (address) = 20 , int 2 sizeof (address) = 24, sizeof (int) = 4 .

= , , , , .. , , , (. ). ( ). . , .

(::) .

->* ___->*. *(___->), .. - , (*) .

, :

struct, union, class __;

C , __ , - . , ,

struct A;// , , , - .

struct B { A* pa;};//

struct A { B*pb;}; //

, . , :

struct s1 { int a; };

struct s2 { int a; };

:

s1 x;

s2 y = x; // :

, , :

s1 x;

int i = x; // :

, , , , . , typedef, , .

:

typedef char* Pchar;

Pchar p1, p2;

char* p3 = p1; //

.

 

7.2 ++

, (), , ( ), .

k- / ;

k- ;

k- ;

( ) ;

( ) ;

;

;

;

.

. , . , . .

, , , .

, (, , ) .

, , (, , ) .

- , (, , ) .

. 1 ++ ( ). () : P- ; O , ; N . begin end .

 

 

 

 


. 7.1

 

, , .. , N , . , , . , , .. , . , , .

++, .

#include "stdafx.h"

#include<string.h>

#include<iostream.h>

card, .

struct card { //

char *author; // ...

char *title; //

char *city; //

char *firm; //

int year; //

int pages; //

};

// :

void printbook(card& car)

{ static int count = 0;

cout<<"\n"<< ++count <<". "<<car.author;

cout<<" "<<car.title<<".- "<<car.city;

cout<<": "<<car.firm<<", ";

cout<<"\n"<<car.year<<".- "<<car.pages<<" c.";

}

, record. prior next P N . 1. obj , .. , .

struct record { // (1)

void* obj;

record *prior;

record *next;

};

// :

card books[] = { // : (2)

{ "Kruglinski David", "Visual C++ 6.0", "", "",2000, 819},

{ "Stroustrup B"," ++", "","",1993, 560},

{ "Turbo C++.", " ", "","",1991,394},

{ "Lippman S.B.","C++ ", "","",1993,496}

};

void main()

{ record *begin = NULL, // ࠠ (3)

*last = NULL, //

*list; //

// n- :

int n = sizeof(books)/sizeof(books[0]);

// :

for (int i=0;i<n; i++)

{// ( ): (4)

last = new(record);

card * pcd = new (card);

// :

pcd->author = books[i].author;

pcd->title = books[i].title;

pcd->city = books[i].city;

pcd->firm = books[i].firm;

pcd->year = books[i].year;

pcd->pages = books[i].pages;

last->obj = pcd;

// ( ):

if (begin == NULL) // 򠠠 (5)

{last->prior = NULL;

begin = last;

last->next = NULL;

}

else{

//

list = begin;

// -

// :

while (list){ //(6)

if (strcmp(((card*)(last->obj))->author, ((card*)(list->obj))->author) < 0){ // list:

if (begin == list){

// : (7)

last->prior = NULL;

begin = last;

}

else{

// : (8)

list->prior->next = last;

last->prior = list->prior;

}

list->prior = last;

last->next = list;

// :

break;

}

if (list->next == NULL){

// : (9)

last->next = NULL;

last->prior = list;

list->next = last;

// :

break;

}

// :

list = list->next;

}// ( while)

//( )

} // ( else)

} // (for)

 

// :

list = begin; // (10)

cout<<"\n";

while (list)

{ printbook(*(card*)(list->obj));

delete (card*)(list->obj);

record* tmp = list;

list = list->next;

delete tmp;

}

}

 

, . (, , ..) , . , STL ( ).

(, ). , 5 10 , record. , . InsertBg .

 

#include "stdafx.h"

#include<string.h>

#include<iostream.h>

 

void printSpisok(double * p)

{ static int count = 0;

cout<<"\n"<< ++count <<"\t"<<*p;

}

 

struct record {

void* obj;

record *prior;

record *next;

static record *begin; //

};

//--------------------------------------------------------------

void InsertBg(void* lt){

if(record::begin ==NULL) {//

record::begin = new (record);

record::begin->next = NULL;

record::begin->prior = NULL;

record::begin->obj = lt;

return;

}

record* tmp = new (record); //

record::begin->prior = tmp;

tmp->prior = NULL;

tmp->next = record::begin;

tmp->obj = lt;

record::begin = tmp;

return;

}

//---------------------------------------------------------

void ClearList(){

record * list = record::begin;

record* tmp = list;

while (list){

delete (double*)(list->obj);

tmp = list;

list = list->next;

delete tmp;

}

}

//------------------------------------------------------

 

record* record::begin=NULL; //

//----------------------------------------------------

void main()

{

record *list;

double *pi = new (double); *pi = 3.14;

double *ex = new (double); *ex = 2.79;

double *z = new (double); *z = 1.1;

InsertBg(pi);

InsertBg(ex);

InsertBg(z);

list = record::begin;

while (list){

printSpisok((double*)list->obj);

cout<<"\t";

list = list->next;

}

ClearList();

 

}

1.1, 2.79, 3.14.

 

record begin static. begin . , , , , . , , , , ( ). (::), , record* record::begin=NULL; , , (.) (->).

, record begin . , , record.

: InsertBg() ClearList().

 





:


: 2018-10-15; !; : 346 |


:

:

,
==> ...

1589 - | 1352 -


© 2015-2024 lektsii.org - -

: 0.147 .