'C 프로그래밍'에 해당되는 글 4건

  1. 2012.05.24 C <20>. enum (4)
  2. 2012.05.21 C <18>. 연결리스트 (Linked list) - 자료구조(1)
  3. 2012.05.18 C <17>. 동적할당 (2)
  4. 2012.05.16 C <16>. 구조체 (2)

C <20>. enum

C 2012.05.24 12:30

오늘의 주제

1. enum


벌써 스무 번째 시간입니다.^^

지난 번에 연결리스트에 대해 알아보았는데요 ㅎ 어려우셨죠?
요번에는 잠시 쉬어갈 겸 간단한 녀석 하나 들고 왔습니다~
이런 녀석도 있구나~
알고 가시면 될 듯 합니다.

자 그럼 상쾌한 기분으로 출발 해 볼까요?
고고씽~~~~~~~~~~~~




# enum

지난 번에 전처리자를 이야기 하면서 enum에 대하여 스치듯이 이야기 해 드린 것 같은데요 그때 소개해 드리지 못해 이번에 소개해 드리려 합니다.

enum은 상수 세트를 선언 해 줄 수 있습니다.

주로 어떤 상수 Flag를 지정해 줄 때 사용하게 되는데요, 그게 무슨 뜻이냐 하면 

내가 프로그램 안에서의 약속을 

상태1 == 0
상태2 == 1
상태3 == 2

으로 표현 간단히 해 주고 싶을 때 사용하게 됩니다.

뭐, 일단 알아두시고 나중에 프로그램을 짤 때 아! 이거 써먹으면 편하겠다! 라는 생각이 들 때가 올거예요 ㅎ 

언제 한 번 사용 해볼 때가 있으면 저도 다시 소개 해 드릴게요 ㅎ

오늘은 간단한 코드만 하나 내려놓고 갑니다~^^*


실행 해 보세요~

아까 말씀드렸다시피 enum으로는 상수형 정수만 표현이 가능합니다.

enum안에서 다음번의 순서에 있는 녀석에 특별히 숫자를 대입해 주지 않는다면, 이전 숫자에 +1 이 되어 들어갑니다.

직접 실행해서 확인해 보시는 방법이 가장 빠르겠네용 ㅎ

그럼 저는 이만~!

다음엔 뭘 가지고 나타나 볼까요 ㅎㅎ


by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <20>. enum  (4) 2012.05.24
C <18>. 연결리스트 (Linked list) - 자료구조(1)  (0) 2012.05.21
C <17>. 동적할당  (2) 2012.05.18
C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
Posted by yagom

오늘의 주제

1. 연결 리스트 (Linked list)


열 여덟 번째 시간입니다.^^

지난 번에 동적 할당에 대하여 알아보았습니다~
오늘은 동적 할당과 구조체를 알고 계셔야 이해할 수 있습니다.ㅎ

2012/05/16 - [C] - C <16>. 구조체

2012/05/18 - [C] - C <17>. 동적할당

자. 오늘 내용은 난이도가 쪼깨 있습니다~
처음 보시는 분들은 다섯 번은 봐야 이해가 될랑 말랑 하실거예요..ㅎㅎ
물론 C의 문법은 아닙니다만(사실 C의 중요한 문법은 거의 끝났다고 봐야겠죠?), 자료구조 공부하심에 있어서 도움이 되실거예요~
정말 중요한 것이니 몇 번을 보고, 다른 싸이트를 검색하고, 직접 계속 둘러보면서 꼭 몸으로 익히도록 하세요~!

자 험난한 여정을 함께 즐겨 볼까요?ㅎ
스따뚜~~~~~~~~~~~~


# 연결리스트

연결리스트 입니다.
이녀석은 언뜻 보면 배열과 비슷합니다.
하지만 동작 방식과 생성 방식은 크게 다르죠~

배열은 메모리 상에서 다닥다닥 서로 붙어있기 때문에 접근하기 용이 합니다. 하지만 우리가 마음대로 개수를 늘렸다 줄였다 할 수가 없지요.

그래서 우리는 연결 리스트라는 녀석을 고안해 냅니다. 쭈욱 늘어선 녀석들을 자유롭게 추가/삭제 할 수 있게 된 겁니다~

하지만, 기본적으로 C에서 주어진 자료형이 아닌, 우리가 직접 스스로 만들어야 하는 어려움이 있습니다.

코드의 양이 적지 않습니다~

잘 따라오세요^^ 물론 역시나 상세한 설명은 주석으로 남깁니다.

헤더 파일입니다.  (yagom.h)
연결리스트의 원소가 될 구조체를 처음에 선언 해 두었구요.
연결리스트 관리를 위한 함수들을 선언해 주었습니다.


구현 파일입니다. (yagom.c)
메인 함수를 구현합니다.


그 후에 헤더에 선언해 놓았던 함수들을 메인함수 아래쪽에 차례대로 작성해 줍니다.


그리고 실행을 해 볼까요?


자 이런식으로 우리는 연결리스트를 배열처럼 사용 할 수 있습니다.

어떤가요? 연결리스트라는 녀석, 비록 복잡하고 속도는 느리지만 용도에 따라 적절히 사용한다면 정말 매력적이 녀석이 됩니다^^*

그럼 다음에 또 뵈어요~^^*

by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <20>. enum  (4) 2012.05.24
C <18>. 연결리스트 (Linked list) - 자료구조(1)  (0) 2012.05.21
C <17>. 동적할당  (2) 2012.05.18
C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
Posted by yagom

C <17>. 동적할당

C 2012.05.18 12:30

오늘의 주제

1. 동적할당 malloc 


열 일곱 번째 시간입니다.^^

지난 번에는 구조체에 대하여 알아보았습니다.
구조체라는 녀석도 꽤나 매력적인 녀석입니다.
예를 들어 한 사람의 정보를 구조체 하나에 담을 수도 있구요(이름, 나이, 성별, 직업 등등)...
복합적인 자료를 관리하기 참 편리할 것 같죠?ㅎ

그리고 저번에 배웠던 배력적인 배열에 대해서도 잠깐 생각해 보도록 해요.
2012/05/11 - [C] - C <14>. 배열
ㅂㅐ열에서 우리는 하나의 의문을 가지고 끝을 맺었었죠.

배열의 크기는 조절 할 수 없는가 였는데요.
네, 조절할 수 없으므로, 필요에 따라서 우리가 원하는 크기만큼 할당하는 것이 좋겠죠?

그런데 우리가 개발을 하면서 이 배열은 딱 이 사이즈면 돼. 라고 말할 수 있는 경우는 많지 않습니다.
때에 따라 너무 다를 수 있으니까요.

그래서 배열을 때에 따라 상황에 맞게 할당 할 수 있는 기능이 있습니다.

물론 배열에 국한된 것은 아니지만 주로 배열에서 사용하게 되므로 배열로 예를 들어서 설명해 보겠습니다.

정말 중요한 것이니 몇 번을 보고, 다른 싸이트를 검색하고, 직접 계속 둘러보면서 꼭 몸으로 익히도록 하세요~! ^^

스따뚜~~~~~~~~~~~~

그 전에 추천 한 방 어떠세요?ㅎ 저에게 큰 힘이 됩니다 +_+ㅋ



# 동적할당 malloc

malloc이라는 함수가 하는 역할은 우리가 원하는 크기의 자료를 메모리에 할당하고 그 주소값을 다시 되돌려 주는 역할을 합니다.
즉, 입력값은 원하는 크기, 리턴값은 메모리의 주소 입니다.

사용방법은

포인터 변수 = (포인터의 자료형 종류)malloc(원하는 자료크기);

이런식으로 사용합니다.

잘 감이 안오시죠?ㅎ 예제를 봐도 감이 올랑말랑 할겁니다 ㅎ

그래도 한 번 예제 소스 보시죠~ 자세한 설명은 역시나 주석으로 ^^

 
지난 번 배열의 비밀에서 배열의 이름은 배열 첫 머리 원소의 주소가 된다고 말씀 드렸죠?ㅎ
그것을 여기서 멋들어지게 써먹는 겁니다~
배열을 메모리에 할당을 해주고 그 첫머리의 주소값을 포인터 변수에 넣어주는 것이죠 ㅎ
그러면 배열과 똑같은 역할을 하게 되는 것이죠~

참! 그리고 malloc을 한 후에 사용을 끝냈으면 꼭 free를 호출해서 메모리에 할당하였던 녀석을 풀어주어야 합니다~
안그러면 메모리에 좀비처럼 남겨져서 메모리가 필요할 때 사용을 할 수가 없어요^^&

그럼 결과를 한 번 볼까요?



자, 숫자는 랜덤으로 들어갔기 때문에 숫자는 다를 수가 있어요 ㅎ

어떤가요? malloc이라는 녀석 매력적인가요?ㅎ

부족하거나 더 궁금한 점이 있다면 주저말고 댓글 주세요~^^*

그럼 전 이만...!


by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <20>. enum  (4) 2012.05.24
C <18>. 연결리스트 (Linked list) - 자료구조(1)  (0) 2012.05.21
C <17>. 동적할당  (2) 2012.05.18
C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
Posted by yagom

C <16>. 구조체

C 2012.05.16 12:30

오늘의 주제

1. 구조체 


열 여섯 번째 시간입니다.^^

지난 번에는 전처리자에 대해 알아보았습니다.
잘만 사용하면 좋지만, 잘못 사용한다면 독이 될 수 있는 녀석입니다.
사용에 유의하세요^^

오늘은 또 하나의 개념 구조체에 대해 알아보도록 하겠습니다.

자 그럼 이제 시작해 볼까요?^^
스따뚜~~~~~~~~~~~~

그 전에 추천 한 방 부탁~~~~~~~해요~~~~~~
저에게 큰 힘이 됩니다. ^~^




# 구조체의 개념


간단 합니다.
이 녀석은 배열과는 다르게 서로 다른 종류의 자료들이 들어갈 수 있습니다.

큰~~~~~~~ 박스 안에 서로 다른 크기의 작은 박스들이 들어가 있는 형태라고 보시면 되겠습니다.

그래서 우리가 큰 박스를 만들고 그 안에 작은 박스들을 만들어 넣습니다.

선언하는 방법은

struct 구조체이름 {
  내용물(변수들 선언)
} 구조체변수이름;


한 번 구조체 이름으로 선언 해 주면
다음 번에는 
struct 구조체이름 구조체변수이름;
이라고 선언 해 줄 수도 있습니다.

구조체 안의 변수에 접근하는 방법은

구조체변수명.내용물변수이름

이런식으로 접근하게 됩니다.

말로 하니까 어렵네요 ㅎ 예제를 한 번 봅시다요~

# 구조체 예제
 


yagom이라는 이름의 구조체를 tYagom, tAgainYagom 이라고 선언해 준 형태입니다.
yagom이라는 이름의 구조체 안에는 int형 변수 nNum과 char 포인터형 변수 szName이 들어가 있네요~
그곳에 접근하는 방법은 .  을 통해서 접근하는 것이죠.


결과 캡쳐입니다. 다들 예상대로 출력이 되었나요?ㅎ

그런데 구조체를 선언 할 때 마다 struct yagom 이렇게 하기가 좀 귀찬습니다...ㅎㅎ

그래서 조금이라도 더 간단히 하기 위해서 우리는 이렇게도 선언을 할 수 있습니다.

typedef 라는 녀석을 이용하는데요.

typedef는 어떠한 형태의 타입을 나는 이렇게 정의 하겠다, 라고 말해주는 것으로써 #define이랑 하는 짓은 비슷합니다만, 정의 해 줄 녀석이 아무거나가 아니라 자료형이라는 점이 다릅니다.

typedef int my;
이런 식으로 해주면
int a; 라고 선언 한 것과 my a; 라고 선언 한 것과 동일한 효과를 가져오게 됩니다.

그러므로 typedef struct yagom{ ...} yagom; 이런 식으로 선언을 해준다면 struct yagom{...} 과 yagom과 같아지는 효과를 보게 되겠지요.

말로는 잘 이해가 다가오지 않죠?ㅎ 실습 해 봅시다.


위에 그림처럼 struct yagom을 한 것과 그냥 yagom이라고 한 것과 같은 효과를 볼 수가 있네요~


자, 이렇게 해서 구조체에 대해 간단히 알아보았습니다.

참, 오늘 빼먹은 것이 있는데, 만약 구조체의 포인터변수에서 내부의 변수에 접근을 하려면 . 을 사용하는 것이 아니라 ->을 사용하게 됩니다.

잘 이해가 안가시면 다다음 번 포스팅 때 제대로 볼 수 있으실 거예요~ㅎ

그럼 다음에 또 뵈어요~^^&

by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <18>. 연결리스트 (Linked list) - 자료구조(1)  (0) 2012.05.21
C <17>. 동적할당  (2) 2012.05.18
C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
C <13>. 변수의 범위  (0) 2012.04.05
Posted by yagom


티스토리 툴바