디시인사이드 갤러리

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

갤러리 본문 영역

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

겔럭시U갤로그로 이동합니다. 2011.03.16 03:26:51
조회 206 추천 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 - -
239108 야이 볍신같은 프갤 새키들아! 혼날래? [5] 유동닉(113.59) 11.03.19 89 0
239106 떡밥이 식네... [1] SODmaster갤로그로 이동합니다. 11.03.19 34 0
239104 닌텐도DS야 해결해줄게. [6] SODmaster갤로그로 이동합니다. 11.03.19 87 0
239103 i++ + ++i떡밥은 닌텐도가 아님니다 [1] ㅁㅁㅁㅁ(118.32) 11.03.19 82 0
239102 학교에서 리눅스를 배우는이유?? 동동주(113.59) 11.03.19 163 0
239100 형들 동적할당이랑 이랑 파일복사좀 물어볼게 젭라도와죵ㅠㅠ [2] 이러지말아봐갤로그로 이동합니다. 11.03.19 87 0
239099 어그로킹 닌텐도DS님 님 어그로실력 부럽습니다! 유동닉(113.59) 11.03.19 39 0
239098 아 리눅스는 매력적이야 풋사과1갤로그로 이동합니다. 11.03.19 79 0
239096 ㅁㅁㅁㅁ// 너 닌텐도지, 너 닌텐도DS 맞지 [5] 원래궁핍갤로그로 이동합니다. 11.03.19 62 0
239095 헤헤 퀴즈 하나 만들어봄 [2] 어슐러르귄갤로그로 이동합니다. 11.03.19 88 0
239094 i가 3일때 i++ + ++i가 왜 답이 8나와요?? [10] ㅁㅁㅁㅁ(118.32) 11.03.19 209 0
239093 지렁이 한마리가 논밭에 숨구멍을 뚫어주는 격 [1] 원래궁핍갤로그로 이동합니다. 11.03.19 62 0
239092 닌텐도DS야 SODmaster갤로그로 이동합니다. 11.03.19 59 0
239090 닌텐도 DS야 [1] SODmaster갤로그로 이동합니다. 11.03.19 84 0
239087 닌텐도DS야 SODmaster갤로그로 이동합니다. 11.03.19 65 0
239086 형들 자바질문 하나만 ㅠㅠ [1] (118.176) 11.03.19 30 0
239085 wpe pro 이거 파일이름 완전히 바꿀려면 어떻게해야되냐?? [1] ㅇㅁㄴ(118.39) 11.03.19 122 0
239084 아 젠장. [1] SODmaster갤로그로 이동합니다. 11.03.19 51 0
239083 헤헤 시 써봄 [2] 어슐러르귄갤로그로 이동합니다. 11.03.19 54 0
239082 프갤횽들은 .... [3] 뀨잉(1.177) 11.03.19 57 0
239081 닌텐도DS 생키야 [4] SODmaster갤로그로 이동합니다. 11.03.19 88 0
239079 누구나 노력하면 좋은 직장에 들어갈 수 있다는말은 [6] 컴돌이(124.62) 11.03.19 99 0
239077 안드로이드 레퍼런스 책 있나요??? [4] 잉드로(113.59) 11.03.19 104 0
239076 형들 제발 도와줘 나 이거 하루꼴딱 해도 몰라요. [4] 완전뉴비(119.67) 11.03.19 96 0
239075 님들 상속에 관한 질문입니다 [4] ㄴㅇㄹ(112.144) 11.03.19 53 0
239072 스크립트??? 스크립트는머지? [4] 밍갤(113.59) 11.03.19 66 0
239071 생성자에 다 쓰고 메인문에 객체 생성만 하는 형식이여 [9] 흠흠흠(121.130) 11.03.19 80 0
239070 레포트 셔틀문의 데이터베이스관련 (사례 작살) [8] 니미블라드갤로그로 이동합니다. 11.03.19 106 0
239067 저기 질문이 있어. 책에 대한 . [2] ssonacy갤로그로 이동합니다. 11.03.19 94 0
239066 php지금 배우는 쉑이는 그냥 자살해라. ㅋㅋㅋ [2] 쿼드로플(61.255) 11.03.19 158 0
239064 코드 하나만 봐듀...ㅠㅠ 베릴로그임 [7] 베릴뉴비(61.74) 11.03.19 167 0
239063 C언어 초급에서 중급으로 넘어가려면 어케해야하나요 [5] GCNB갤로그로 이동합니다. 11.03.19 158 0
239062 질문이라고 부르기도 민망한건데;; [1] ㅁㅁㅁ(119.196) 11.03.19 59 0
239061 잘부탁드립니다. [3] GCNB갤로그로 이동합니다. 11.03.19 58 0
239060 라이프 게임 재밌당 [1] 허허벌판갤로그로 이동합니다. 11.03.19 154 0
239059 안드로이드 개발 초보적인거 하나만 도와주세요.. [2] 초보초보(121.145) 11.03.19 120 0
239058 오늘은 댓글어그로 시전의 날이다. 삼류개발자갤로그로 이동합니다. 11.03.19 98 0
239057 성님들 c에잇는거 vaware리눅스 쓴느데 이거 ftp 로 어떻게 삭제하 [1] 풋사과1갤로그로 이동합니다. 11.03.19 63 0
239056 이클립스 안드로이드로 NyArtoolkit 쓸때 윤가(211.229) 11.03.19 156 0
239055 아항 너무 좋앙 아항 [1] 어슐러르귄갤로그로 이동합니다. 11.03.19 163 0
239054 아 부럽다.... 열등감때문에 자괴감에 잠을못이룸 [4] 인생무상(113.59) 11.03.19 112 0
239053 정보통신공학vs컴퓨터공학 [5] ㅇㅇ(175.192) 11.03.19 188 0
239052 자바 궁금증좀 물을께여 [1] 초보(112.166) 11.03.19 74 0
239051 c++ 질문좀요 ㅠ [3] sd(118.42) 11.03.19 103 0
239050 형들 난감해 실마리점 주세용 [4] Paradise갤로그로 이동합니다. 11.03.19 71 0
239049 휴... 가장큰 숫자 해냄 ..ㅎ [1] FreeH-K갤로그로 이동합니다. 11.03.19 97 0
239048 3월이라 그런가 교수님들이 참 좋은말은 해주는데... [7] ㅁㅇㅁㅁ(219.249) 11.03.19 203 0
239047 왜 프로그래밍 처음배울때 [5] ㅁㅁ(116.127) 11.03.19 192 0
239046 세 숫자중 가장 큰숫자 어디부분 고쳐야해요?... [2] FreeH-K갤로그로 이동합니다. 11.03.19 112 0
239045 오오미 횽들아 C# 책좀 추천해주ㅓ [4] 나카쥰갤로그로 이동합니다. 11.03.19 92 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2