기본 콘텐츠로 건너뛰기

구조체

구조체란 여러가지 자료형을 묶어놓은 집합적인 자료형이다.

구조체의 정의

 1 struct 구조체명
 2 {
 3     int x;
 4     int y;
 5 }



구조체의 선언

 1 struct animal
 2 {
 3     ...
 4 } dog, cat;

 1 struct animal
 2 {
 3     ...
 4 }
 5 ...
 6 struct animal dog, cat;



구조체의 초기화

 1 struct animal
 2 {
 3     int color;
 4     ...
 5 } dog = {.., .., ..};



구조체의 멤버

구조체의 멤버를 사용하려면 .연산자를 사용한다.
 1 dog.color;


구조체를 멤버로 가지는 구조체

필요한만큼 .연산자를 사용하면 된다.
 1 record.topleft.x = 100;


배열을 멤버로 가지는 구조체

 1 record.x[1] = 100;



포인터를 멤버로 가지는 구조체





구조체의 배열

 1 struct animal dog[100];
 2 dog[1].color;


구조체의 포인터

-> : 구조체 포인터의 멤버 연산자
 1 struct part* p_part;
 2 struct part gizmo;
 3 p_part = &gizmo;
 4 p_part->number = 100;


자료형의 정의

 1 typedef struct
 2 {
 3     ...
 4 } animal;
 5 
 6 animal dog, cat;

댓글

이 블로그의 인기 게시물

연산자 우선 순위

() (괄호) [] (배열) -> (포인터멤버) . (구조체멤버) ! (부정) ~ (1의보수) ++ (증가) -- (감소) - (부호)  + (부호)  (자료형) (형변환)  * (포인터)  & (주소)  sizeof * (곱셈) / (나눗셈) % (나머지) + (덧셈) - (뺄셈) << >> (비트이동) < <= > >= (관계) == != (관계) & (비트논리곱) ^ (비트배타논리합) | ( 비트논리합 ) && (논리곱) || (논리합) ?: (조건) = (할당) += -= *= /= %= &= ^= |= <<= >>= (복합할당) , (쉼표)

주석문

주석(comment)은 프로그램의 기능이나 동작을 메모해두는 문장이다. 컴파일러는 주석의 내용을 무시한다. 여러 줄 주석 시작 기호(/*)와 끝 기호(*/)는 반드시 쌍으로 사용되어야하며, 중복해서 사용되어서는 안된다. 1 /* 2 주석 3 */ 한 줄 주석 원칙적으로, 한 줄 주석문은 C++언어에서 지원되는 형식이다. 1 // 주석

포인터

포인터는 다른 변수의 주소값을 가지는 특별한 변수이다. *는 포인터의 내용 연산자이다. &는 포인터의 주소 연산자이다.  일반 변수 포인터 변수   선언  int a; // 정수형 변수 a  int *a; // 포인터 변수 a를 종수형으로 선언  값 할당  int a = 100; // 변수 a에 100할당  *a = 100; // a 주소에 100 할당  주소 참조  &a; // 변수 a의 주소  a; // 주소  주소 연산  할 수 없음  a--; // 포인터를 1 감소 선언 1 자료형 * 포인터변수명 ; 1 int * p ; 변수 p는 포인터 변수이며, 정수형의 값을 가지는 변수에 대한 주소를 가진다. 선언시에 사용되는 *는 내용 연산자가 아니다. 초기화 포인터 변수는 반드시 초기화 후에 사용해야 한다. 1 int * p ; 2 int i ; 3 p = & i ; 포인터 변수의 크기 포인터 변수의 자료형은 포인터가 가르키는 변수의 자료형이다. 포인터 변수의 크기는 포인터가 가르키는 자료형의 크기와 무관하다. 1 #include <stdio.h> 2 3 /* 4 포인터의 크기 5 */ 6 7 int main () 8 { 9 int i = 4 ; 10 int * p_i = & i ; 11 char ch = 'a' ; 12 char * p_ch = & ch ; 13 double dbl = 1.0 ; 14 double * p_dbl = & dbl ; 15 16 printf ( "%d \n " , sizeof ( p_i )); 17 printf ( "%d \n " , size...