본문 바로가기

프로그래밍/C/C++

구조체,structures

 

구조체란 간단히 말해서 다른 자료형들의 모임.이다. 일종의 레코드.

구조체를 구성하는 것들을 멤버변수(필드field,아이템item)라고 한다.

형식>

struct 구조체명{

자료형 변수;

...

} // 구조체 선언

...

struct 구조체명 변수;

->

struct people{

int age;

char name[10];

char addr[20];

char sex;

...

}

struct people busan;

이럴수도 있고, 선언후 바로

struct people{

int age;

char name[10];

char addr[20];

char sex;

...

} busan;

이럴수도 있다. 또한

typedef struct people{ // people 구조체 선언하고

int age;

char name[10];

char addr[20];

char sex;

...

} man; //struct people 으로 선언하는것 대신 man으로 대체한다고 선언.

이런경우엔

man busan; 이렇게만 해도 구조체 선언이 가능함.

접근법.

busan.age

busan.name

busan.addr ... 이런식으로 접근가능.

---------------------------------------------------------------

구조체 주소변수. - 동일 구조체형으로 선언한 구조체 시작주소를 가진다. 이게 편하다.

형식.

sruct goods{

char *name;

int price;

int jaego;

};

struct goods pen;

struct goods *ppen;

ppen=&pen;


참고> ++주소변수->멤버변수; // 이건 멤버변수값을 +1 시킨다.

주소변수++->멤버변수; // 이넘은 멤버변수처리후 구조체주소변수를 +1 시킴.

예>

struct Goods{

char *name;

int price;

int jaego;

}

void main()

{

 int i;

 struct Goods A[3];

 struct Goods *ap;

 ap=&A[0];

 ap->name = "ballpen";

 ap->price = 500;

 ap++->jaego=10;

 ap->name="watch";

 ap->price=10000;

 ap->jaego=99;

 ++ap->jaego;

 ap++;

 (*ap).name="tape";

 (*ap).price=1000;

 (*ap).jaego=500;


for(i=0;i<3;i++){

printf("name : %s , price : %d, jaego : %d",A[i].name,A[i].price,A[i].jaego);

}

}