Contents

Java
2013.11.22 20:38

2.1.3 구조체 만들기

조회 수 361 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
book_7237.png


2.1.3 구조체 만들기

앞에서 언급했듯이 기본 데이터 타입은 분명히 하나의 데이터를 담을 수 있는 변수이다. 예를 들어 'int a = 3'에서 a라는 변수에 다른 수를 할당하면 3은 사라지고 만다. 만약 'a = 5'라고 한다면, a에 들어 있던 3은 사라지고 새로이 5라는 수가 a의 메모리에 자리를 잡게 된다. 이러한 관점에서 본다면 기본 데이터 타입의 문제점은 데이터 타입이 고정적이며 하나의 데이터밖에 담을 수 없다는 것이다.

▒ 기본 데이터 타입 변수에는 하나의 데이터만을 담을 수 있다.
1
2
int a = 3;
a = 5;

앞에서도 잠깐 언급했듯이 C 언어에서는 구조체로 이 문제를 해결하고 있다.

☞ 자바에서는 구조체가 없다.
자바에서는 구조체를 사용하지 않지만, 구조체의 의미는 객체지향 프로그래밍(Object-Oriented Programming) 언어의 역사를 말해주고 있기 때문에, 구조체에 대한 약간의 지식을 가진다면 자바가 어떠한 구조로 되어 있는지 보다 쉽게 이해할 수 있다. 구조체의 정확한 문법구조까지 알 필요는 없다. 단순히 '아! 이렇게 되는구나!'정도의 개념만 이해하면 된다.


구조체를 하나 만들어 보자. 구조체를 만들기 위해서는 struct이라는 키워드를 사용하며, struct을 이용해서 구조체의 이름을 지정하고 있다. Person이라는 이름의 구조체를 만들고 있으며, 내부에는 3개의 변수가 추가되어 있다. struct 키워드로 3개의 변수를 묶어서 Person이라고 부르겠다는 것이다. 이러한 구조로 실제 구조체를 만들면 다음과 같다.

▒ C 언어에서의 Person 구조체 선언
1
2
3
4
5
struct Person{
    int age;
    float height;
    float weight;
 };

struct 키워드로 처음이자 마지막으로 만들어 보는 Person 구조체를 분해하면 다음과 같다.

□ Person 구조체의 분석
◇ struct : 구조체를 만드는 키워드
◇ Person : 구조체로 만들어진 새로운 데이터 타입
◇ int age : Person 내부의 멤버
◇ float height : Person 내부의 멤버
◇ float weight : Person 내부의 멤버

위의 방법대로 만들어진 Person 구조체는 새로운 형태의 데이터 타입의 역할을 수행할 수 있다. 여기서 Person은 새로운 데이터 타입이며, struct 키워드는 새로운 데이터 타입을 생성하는 데이터 타입 생성기이다.

잠깐 앞장에서 배운 내용을 상기시켜 보자. 데이터 타입은 메모리의 크기와 형태를 지정하는 것이라고 배웠다. 위에서 struct이라는 키워드를 이용해서 새로운 데이터 타입 Person을 만들었다면, Person은 메모리의 크기와 형태를 지정하는 데이터 타입이 된 것이다.

□ 구조체란?
◇ 기본 데이터 타입의 한계를 극복하기 위해서 C 언어에서 제공되는 데이터 타입 생성기

□ 구조체로 만든 사용자 정의 데이터 타입
◇ 구조체로 만든 사용자 정의 데이터 타입 Person은 메모리의 크기와 형태를 지정하는 데이터 타입이다.

새로운 데이터 타입 Person의 메모리 크기는 4(int) + 4(float) + 4(float)가 될 것이다. 그리고 메모리의 형태는 int + float + float 모양이다. 새로운 데이터 타입이라고 해서 두려워할 것은 없다. 단순히 데이터 타입이란 메모리의 크기와 형태만을 지정할 뿐이기 때문이다.

여기서 기억해야 하는 것은 여러분이 직접 메모리의 크기와 형태를 지정하는 여러분들만의 데이터 타입을 만들 수 있다는 것이다. 그렇기 때문에 사용자 정의 데이터 타입이라고 하는 것이다.

□ Person 구조체의 메모리의 크기와 메모리의 형태
◇ Person 데이터 타입의 크기 = 4(int) + 4(float) + 4(float)
◇ Person 데이터 타입의 형태 = int + float + float

struct 키워드를 이용한다면 새로운 데이터 타입을 만들어서 기본 데이터 타입의 한계를 극복할 수 있다. 이제 하나의 메모리에 서로 다른 형태를 가진 여러 개의 변수를 한꺼번에 묶어서 관리할 수 있게 된 것이다.

반드시 기억해야 하는 것은 기본 데이터 타입이든 사용자가 만든 데이터 타입이든지 간에 데이터 타입은 변수를 생성할 수 있으며, 변수의 생성은 메모리 생성의 의미를 지니고 있다는 점이다. 이 원리는 자바의 클래스에도 적용이 되기 때문에 아주 중요한 사항이다. 꼭 기억해두기 바란다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
32 Java 2.3.1 클래스와 데이터 타입의 관계 IT장인 2013.11.22 385
31 Java 2.2.4 사용자 정의 데이터 타입 테스트 IT장인 2013.11.22 659
30 Java 2.2.3 메모리 생성 연산자 IT장인 2013.11.22 361
29 Java 2.2.2 클래스의 사용 IT장인 2013.11.22 358
28 Java 2.2.1 클래스 만들기 IT장인 2013.11.22 333
27 Java 2.1.5 클래스로 가는 길목 IT장인 2013.11.22 314
26 Java 2.1.4 구조체의 사용 IT장인 2013.11.22 356
» Java 2.1.3 구조체 만들기 IT장인 2013.11.22 361
24 Java 2.1.2 기본 데이터 타입의 한계 IT장인 2013.11.22 336
23 Java 2.1.1 핵심 Question IT장인 2013.11.22 290
22 Java 1.6.4 결론 IT장인 2013.11.21 332
21 Java 1.6.3 할당의 예 IT장인 2013.11.21 338
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6