관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter16] 본문

Programming Language/C Programming

[C프로그래밍 Chapter16]

JackYoon 2020. 2. 6. 13:04
반응형

[구조체]

구조체

하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구

구조체 기반으로 새로운 자료 정의 가능. 구조체 이름이 int나 double 처럼 자료형이된다.

 

struct type_name val_name;

#구조체 변수 선언의 기본적 형태

 

struct Sample{

    char name[10];

    int age;

};

#위처럼 구조체를 정의하고, struct Sample sp; 처럼 구조체 변수를 선언한다.

sp.age같이 구조체 내부에 접근이 가능하다.

 

구조체 멤버로 배열이 선언되면 배열의 접근 방식을 취하면 되고, 구조체의 멤버로 포인터 변수가 선언되면

포인터 변수의 접근 방식을 취하면 된다.

 

구조체 변수 선언 초기화.

구조체 변수 또한 선언과 동시에 초기화가 가능하다. 앞에서 정의한 Sample구조체에 대하여

struct Sample = {"홍길동", 27}; 이런식으로 선언과 동시에 초기화가 가능하다.

[구조체와 배열, 포인터]

구조체 배열의 선언과 접근

여러개의 구조체 변수를 선언 할때, 구조체 배열을 만들어서 정의한다.

struct Sampe arr[10]; 이런 식으로 구조체 배열을 정의한다.

 

구조체 배열의 초기화

구조체 배열을 초기화 할 경우, { } 중괄호를 사용한다

struct Sample arr[2] = {

    {"홍길동", 27};

    {"단군", 27};

    {이순신", 28};

}

배열의 길이만큼 중괄호를 사용하여 표기한다.

 

구조체 변수와 포인터

struct Sample sp = {"홍길동", 27}; 구조체 변수를 선언과 동시에 초기화 한다.

struct Sample * ptr = &sp;  구조체 포인터 변수를 사용하여 구조체를 지칭한다.

 

age에 접근하고 싶은 경우. *(ptr).age = 20; 홍길동의 나이는 20이 된다.

* . 연산자를 묶어서 ->연산자로 표기가 가능하다.

따라서 위의 식은 ptr->age = 20;으로 변경이 가능하다.

 

구조체 내부엔 모든 변수가 다 들어 올 수 있다. 변수, 포인터형 변수, 배열, 구조체 자신까지

구조체에 포함된다.

 

구조체 변수의 주소 값은 구조체 변수의 첫 번째 멤버의 주소값과 동일하다.

반응형

'Programming Language > C Programming' 카테고리의 다른 글

[C프로그래밍 Chapter18]  (0) 2020.02.11
[C프로그래밍 Chapter17]  (0) 2020.02.10
[C프로그래밍 Chapter15]  (0) 2020.02.05
[C프로그래밍 Chapter14]  (0) 2020.02.04
[C프로그래밍 Chapter13]  (1) 2020.02.03
Comments