디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[겔럭시U]병신이 배우면서 가르치는 병신들을 위한 C언어 -3일차-

겔럭시U갤로그로 이동합니다. 2011.03.16 03:26:51
조회 208 추천 0 댓글 2


오늘 공부할 내용은.

변수와 자료형에 대해서 알아보려고해.

뭐... 크게 어려운 부분이 아니지만 처음 접해보면

약간 이해가 잘 되지 않을 수도 있어.. 하지만 굉장히

중요한 파트니까 꼭 숙달될때까지 공부하기 바래..

-----------------------------------------------------------------------
Day3 - 변수와 자료형 이해하기-


어.. 일단 우리가 자료형이나 변수에 대해 살펴보기전에..

"예약어"라는걸 알아야돼..

이 예약어라는게 뭐냐면 우리가 소스를 작성할 때 여러가지 명령에 필요한

단어들을 컴파일러에서 C언어 표준에 맞게 미리 정의해 놓은거야..

형들이 프로그래밍을 할때 이 예약어들을 사용해서 명령을 내리면 돼..

예약어는 기능에 따라 여러가지 있지만 나중에 차근차근 배우고..


오늘 진짜로 배울꺼는 "변수""자료형"인데

일단 "변수"를 살펴보자..

프로그래밍에서 변수는 아주 간단해...

뭐 고딩때 수학배우면서 변수라는 개념을 배울텐데..

뭐 약간 개념이 다르다고 할수있어..

프로그래밍에서는 변수는 데이터를 저장할 수있는 공간이라고 생각하면되..

한마디로 이 변수를 활용해서 우리가 메모리에 데이터를 저장하고 활용할 수 있다는거지.

"변수는 저장공간" 이다 라고 일단 이해하고 넘어가면 쉬울꺼같아...

우리가 프로그램을 만들면서 여러가지 데이터들을 저장해야 하는 경우가 생기는데

이 데이터들을 변수라는 곳에 저장한다는 이야기야...

자 그럼 우리가 데이터를 저장하기위해서 컴퓨터에게 "나에게 저장할 데이터가있으니 공간을 달라"라고

선언을 해줘야지.. 한마디로 우리가 저장공간을 사용하기 위해서는 컴퓨터에게 미리 이야기를 해줘야한다는거지..

int a;

자.. 위에처럼 적어주면돼..

한글로 해석해보면 "이름이 a라는 정수형 변수를 선언하다"라고 할수있어.

변수를 선언하는 방식은...

자료형 이름;

이렇게 입력하면되...

이름은 형들 마음대로 만들수 있는데... 약간의 규칙이 있어..

1.공백문자(스페이스)는 쓸수 없고..
2.이름 맨 앞에는 숫자는 사용할수없어.
3.특수문자도 사용할수없고,(단, _ 는 쓸수있엉) 한글도 안되겠지?
4.앞서 말했던 "예약어"도 사용못해.
5.마지막으로 이름의 대문자, 소문자를 구분해.

몇가지 특징이 더 있는데... 글자수 제한이라던가..궁금하면 검색해봐..

그 규칙만 지키면 원하는 이름을 적어서 활용하면 되겠어..

자.. 그럼 이제 "자료형"이란걸 공부해볼껀데..

우리가 컴퓨터한테 데이터를 저장하기위해 공간을 달라고 할때...

사용 용도(자료형)를 알려줘야돼..

그래야 컴퓨터가 그 용도에따라서 적절한 공간을 할당해주고 알맞는 작업을 진행하니까..

"야 공간 내놔" 이렇개 해뿔면

공간 어느정도를 줘야할지 공간에 뭐를 어떤 방식으로 넣을지 등등.. 컴퓨터는 알지 못하니까..

 

이런 사용 용도에따른 "자료형"에는 상당히 여러가지가 있는데

C언어에서는 대표적인 자료형을 예약어(int, float, double, char, unsingned.. etc)로 만들어 놨어..

위에서 본 int도 그중에 하나라고 할수있어..

자 그럼 그 대표적인 자료형들중 몇가지를 알아보자.

정수형 : int

integer의 준말로 "정수"형인 자료형을 말해.

정수는 다 알지? -2,-1,0, 1, 2, 3, 4, 5... 알지...?

이런 정수들을 저장하기위해서 사용되는 자료형이 바로 int야...

위에서 예를 든 "int a;"도 정수형 변수지..
-------------------------------------------------------------

실수형 : float

사전에서 찾아봤는데 뭐 관련된 뜻은 못찾겠네..뭐 어떤 의미가 있겠지...ㅋㅋ

아무튼 float는 "실수"형인 자료형이야..

위에서 정수를 저장하는 곳을 int형이라면

실수를 저장하는 곳을 float형 이라고 할수있지.

실수도 뭔지 알지? 1.1, 3.2 이런거.. 소수점 붙은거..
-------------------------------------------------------------

문자형 : char

character의 준말. 뜻은 뭐.. 여라가지가 있는데 그 중에 "글자"라는 뜻이있네..

말 그대로 한 글자를 저장하기 위한 변수형이야..

a,b,c,d 같은거 말이지...

여기서 중요한점은 \'한 글자\'라는 거야.. 한글자.. 한단어나 한 문장아 아니라는거지..

이 외에도 변수의 크기에 따라 용도에 따라 더 많은 자료형들이 있지만 이건 내일 배워보자.

중요한건 자료형에 따라 공간이 만들어지고 반듯이 그 공간에 맞는 값을 입력해야한다는거야..

실수형 선언해놓고 문자를 입력하면 안된다는 거지..

(아 물론 정수는 실수형에다 입력해도되지.. 실수에는 정수도 포함되니까....)

자 위에서 봤던것처럼

int a;

이렇게 함으로써 이제 우리는 int형(정수)을 저장할 수 있는 공간이 생긴거야..

하지만 이 공간에 우리가 데이터를 넣어준 적이 없으니

이 공간에는 "쓰레기값"들이 들어있어..빈 공간이 만들어지는게 아니라

변수공간이 생성되면서 컴파일러에 의해서 아무런 의미없는 "쓰레기 값"들이 채워지게 되지..

그럼 우리가 다음 해야할 작업은 이 "쓰레기 값"이 들어있는 변수에

우리가 저장할 값을 넣어줘야해.. 그래야 의미가 있겠지..

방법은 아주 간단해..

a = 10;

참 쉽죠? 위에 소스를 정리해볼까?

#include <stdio.h>

int main(void)
{
       int a;
       a = 10;

       return 0;
}

자 위에 소스를 보면 "int형 a라는 변수를 만들고

그 변수에다가 10이라는 값을 넣어주겠다."라는

이야기지... 이해됬음?

자 여기서 중요한것은... 우리가 아는 "="이 기호를 주의해야해..

우리가 수학에서 "="기호는 "같다", 즉 동등의 의미를 가지고있지만..

C언어에서는 "="기호는 "대입연산자"라고 하는 연산자야..

뭔말이고 하면... "="이 기호는 "우측의 있는 값을 좌측의 공간에 대입하겠다" 라는 의미의 "명령어"라는 거야.

우리가 일반적으로 알고있는 동등의 의미의 기호는 C언어에서는 "=="이야.. 2개를 붙여서 쓰지..

(이부분은 나중에 연산자파트에서 다시 알아보도록하고)

이렇게 "="기호를 이용해서 메모리상에 공간을 확보하고 그 안에다가 "값"을 넣어준거지.

다른 방법도있어..

int a = 10;

위에 보면 무슨 말인지 알겠지?

이처럼 변수를 선언함과 동시에 10이라는 값으로 "초기화"해줄수도있어.

이런걸 초기화라고 하는데 지금이야 이런 초기화를 해주던 안해주던 큰 상관은 없지만

나중에 규모가 큰 프로그램을 만들다보면 초기화를 해주지 않아서 치명적인 오류를 맛볼수있으니..

변수를 만들면 되도록이면 초기화 해주는 습관을 들이도록 하자.


그 다음으로 변수를 만드는데 한번에 여러개를 만들수 없을까?

당연히 있어..

다음을 보면

int a, b, c;

이렇게.. 쉽지? 이건 정수형 변수 a와 b와 c를 만들겠다는 이야기야

","을 사용해서 각 변수들을 구분지은 거야.

즉 정수형 변수 3개가 만들어진거지..

다른것도 해볼까..

double a, b, c;

알겠지?

이것도 선언과 동시에 초기화를 해줄수있어..

int a = 10, b = 20, c;

이렇게.. 그러면 a에는 10, b에는 20, c에는 쓰레기값들이 들어가게 되겠지.

다음으로 문자형을 알아보까..

문자형은 뭐라고 했지?

char였지?

자료형 이름;

방식으로... 변수를 만들어보면..

char ch;

가 되고 중요한건 값을 넣는 건데..

ch = \'a\';

이렇게 넣어줄수 있어..

\'\' 이 기호안에 한 문자를 넣어줘야해..(\' \' 이 기호 안에 있는건 문자입니다..라고 명시해주는거야..)

이것도 마찬가지로

char ch = \'a\';

로 변수 선언과 동시에 초기화를 해줄수 있어..


자 오늘 배운걸 총 정리해보면

#include <stdio.h>

int main(void)
{
      int a = 10, b = 20, c;
 
      char ch = \'a\';
 
      c = 30;

      printf("a : %d, b : %d, c : %d, ch : %c", a, b, c, ch);

      return 0;
}


자 위에 소스보면 만들어서 실행해보면

우리가 입력한 값들이 알맞게 뜨는걸 볼수있을꺼야..

printf는 나중에 배울꺼니까 오늘은 그냥 넘어가..

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

이렇게 오늘 자료형과 변수에 대해서 간략하게 알아봤어.

오늘 배운것중에 자료형은 무엇을 의미하는지

변수는 무엇을 의미하는지

변수에 값을 어떻게 넣는지..등 을 배웠는데..

간략하게 개념정도만 알고 넘어갔으면 좋겠어

원래 자료형에 따른 변수의 종류나 범위에 대해서 자세히 알고넘어가야 하는데

이 부분이 메모리에 대한 개념도 알아야하고

어렵고 상당히 양이 많으니

내일 자세하게 공부하도록 하자

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

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 외모와 달리 술 일절 못 마셔 가장 의외인 스타는? 운영자 24/07/01 - -
239246 횽들 mysql 연결이 안됨 (C++) [1] 프라메비아플(175.120) 11.03.20 98 0
239245 이클립스가 안켜져요 ㅇㅇ(220.94) 11.03.20 3160 0
239244 형들 회사입사할때 자격증보다 자기가 햇던 프로젝트 같은거 말하면 잘봐줌? [1] (110.5) 11.03.20 94 0
239243 형님들~~ 질문 좀 할게요. 학교과제 ㅠㅠ [12] 늅늅(182.208) 11.03.20 168 0
239242 Matlab입문하는 놈인데 이것좀 알려줄수있어?? [3] ㅂㅂㅂㅂ(115.137) 11.03.20 114 0
239240 php ㅈ뉴비 질문점 [4] ㄱㄹㅇ(119.195) 11.03.20 82 0
239237 형들 정말 C#책 추천 안해줄꺼야??? [5] 나카쥰갤로그로 이동합니다. 11.03.20 193 0
239236 파일입출력 구분자 쉼표로하는게 공백으로 하는거보다 어렵나요? [3] 복학생(180.65) 11.03.20 93 0
239235 능력자횽들 하나만 가르쳐줭 으악(121.144) 11.03.20 57 0
239232 정보처리 기사2부하고1부는 원차이?? 마타버터갤로그로 이동합니다. 11.03.20 60 0
239230 님들 little-endian 저장방식에 대해서 질문욥!!! [7] 전산학꼬꼼하(114.71) 11.03.20 126 0
239229 windows 콘솔에서 특정 네트워크 연결 설정 어떻게하지? [1] ㄹㄹㄹ(112.170) 11.03.20 62 0
239228 나의 무식함에 슬프다.. 복학생(180.65) 11.03.20 50 0
239227 안드로이드 api는 왜 한글문서가 없지? [2] 잉드로(175.205) 11.03.20 432 0
239226 컴갤에서 무시당해서 여기다 물어봐여 노트북 비교좀해주세여ㅠㅠ [2] 쭈쭈(121.137) 11.03.20 126 0
239225 형들 코딩 잘하는 방법 알아냈음 레알 유용한듯 [10] 갤코딩(222.237) 11.03.20 262 0
239222 바탕화면에서 하는 게임을 만들려면 [6] 궁금해요(221.141) 11.03.20 206 0
239220 횽들 랩뷰도 프로그래밍이니까 여기서 질문좀.... [2] 랩뷰(180.226) 11.03.20 148 0
239219 맨날 손가는 대로 짜다가 설계라는 걸 좀 해볼려고하는데 [2] ㅇㅇ(119.71) 11.03.20 90 0
239217 웹디자인 별로 필요없는것 같고 사이트 구현하는데 한계가 와서 프로그램 1(110.11) 11.03.20 79 0
239214 일본이 발전하려면... 꿀레(14.33) 11.03.20 68 0
239213 아 진짜 네이버 싫다 [6] 어슐러르귄갤로그로 이동합니다. 11.03.20 266 0
239211 여기 캐드능력자횽 잇나요? [2] 우끼끼.갤로그로 이동합니다. 11.03.20 70 0
239209 솔까 나는 진짜 막장갤신학생갤로그로 이동합니다. 11.03.20 68 0
239208 진정한 랜덤머신.swf [5] ㅇㅇㅇ(121.144) 11.03.20 231 0
239207 정보처리기사 필기 합격 해쓰요 [1] 막장갤신학생갤로그로 이동합니다. 11.03.20 88 0
239205 일본은 이제 진짜 정신차리고 살 것 같다. [4] ㅇㅇ(121.133) 11.03.20 129 0
239204 형들 저 약간 변태적 기질이 있는거같아요. [1] (110.5) 11.03.20 143 0
239203 카이스트 전산과 재학 중입니다. 아래 프리랜서 말이죠... [5] ㅁㄴㅇㄹ(210.107) 11.03.20 415 0
239202 존나 별로라고 생각한 여자가 찝적대면 [1] 분당살람갤로그로 이동합니다. 11.03.20 129 0
239201 웹 / 모바일 개발자들 많이 모이는 사이트 좀... [3] ㅇㅇ(183.98) 11.03.20 111 0
239199 비쥬얼 스튜디오에서 어셈블러 코드 보려면요.. [1] 왕초보(211.52) 11.03.20 127 0
239198 형들 자바 질문좀 [7] 읭읭읭읭갤로그로 이동합니다. 11.03.20 95 0
239197 정보처리기사 셤 보고 옴... [2] 쿄스케갤로그로 이동합니다. 11.03.20 139 0
239196 나 신입~ [1] ddong냄새갤로그로 이동합니다. 11.03.20 47 0
239195 횽들아 컴공과 들어가서 실력쌓은 담에 프리랜서알바로 돈좀 벌 수 있어요? [12] (112.145) 11.03.20 324 0
239193 형들 openmp에대해 어떻게 생각해? [1] 보헤미안(211.48) 11.03.20 59 0
239192 횽들 c에서 sin값 쓰는방법없을까? [4] 12324갤로그로 이동합니다. 11.03.20 101 0
239191 자료구조와 알고리즘의 관계 - 천한플머 강의 [8] 천한플머(121.139) 11.03.20 255 0
239190 프로그래밍갤러리 형님들 컴파일러서 어셈블러 소스코드 불러오는법좀 알려주세요 [1] 초보자(211.52) 11.03.20 93 0
239189 횽들~♥ ㅂㅈㄷㄱ(116.36) 11.03.20 53 0
239188 C언어에서 아스키코드 [5] ㅂㅈㄷㄱ(116.36) 11.03.20 202 0
239187 맥에서 쓸 c 컴파일러 추천좀 ㅜ [4] 래댁갤로그로 이동합니다. 11.03.20 159 0
239186 자료를 찾아야되는데 희한하게 옛날책은 보기가 싫음 적어도 2009년이전꺼 [2] 풋사과1갤로그로 이동합니다. 11.03.20 77 0
239185 소프트웨어 엔지니어!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [5] 형들(131.104) 11.03.20 195 0
239184 C++ 인터페이스(interface)와 추상 클래스의 근본적인 차이가.. [3] 제페(121.129) 11.03.20 349 0
239183 저기 궁금한게 있습니다. -함수만들때- [5] 버프좀^^갤로그로 이동합니다. 11.03.20 119 0
239181 인공위성에 들어가는 프로그램 만들려면 [3] 하앍하앍(123.199) 11.03.20 132 0
239180 형들 뭐 써야 대는지좀 도와줘; [1] 개념천국갤로그로 이동합니다. 11.03.20 70 0
239177 오오미 프갤 새벽반 이랑께 elwlwlwk갤로그로 이동합니다. 11.03.20 103 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2