디시인사이드 갤러리

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

갤러리 본문 영역

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

겔럭시U갤로그로 이동합니다. 2011.03.16 03:26:51
조회 207 추천 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 - -
239286 씨벌 이클립스 외국인새끼들 이클립스(125.187) 11.03.20 39 0
239285 님아님아 디씨인사이드랑 똑같은 사이트 만드는 방법 알아냈음 김유식(125.187) 11.03.20 60 0
239284 대학원진학하려는데.. 조언좀 [2] 호비잇갤로그로 이동합니다. 11.03.20 95 0
239283 너네는 스맡폰 광고 어디에서 쓰냐 [1] 광고쟁이(125.187) 11.03.20 40 0
239282 디시인사이드 정도 되는 사이트 만들 줄 아시는분? [2] GCNB갤로그로 이동합니다. 11.03.20 43 0
239281 스마트폰에서 광고 수익 많이 올리는 방법 [1] 광고쟁이(125.187) 11.03.20 65 0
239280 프로그래밍은 때를 타야한다고 생각하는데? 프로그래밍은(125.187) 11.03.20 47 0
239278 우리는 프리더같은 CEO를 만나야합니다. 프리더님만세(121.144) 11.03.20 103 0
239277 이클립스 안드로이드 개발이랑 opengl 돌릴건데 [3] (210.113) 11.03.20 88 0
239276 보안쪽으로 빠질려면 c랑 tcp/ip를 주력으로 공부하면 되나요? [4] ㅇㅇㅇ(219.249) 11.03.20 102 0
239275 본격 디시인사이드 만들기 [9] 아주아슬갤로그로 이동합니다. 11.03.20 223 0
239274 아 좆나 들은거는없고 거의 프로그래밍 실력은 줫도없고 재능도 없고 [4] 124(118.176) 11.03.20 107 0
239273 여기 맞는주제인지는 모르겟능데 알면답변좀여 [1] 데데데데데데갤로그로 이동합니다. 11.03.20 33 0
239271 님들 c 개초보 질문좀 받아주세요 [3] ㅇㅇ(118.32) 11.03.20 60 0
239270 안드로이드, 혹은 자바라도,. 질문! 로이(218.49) 11.03.20 67 0
239269 이거 하나만 알려줘 SODmaster갤로그로 이동합니다. 11.03.20 31 0
239268 여러분 디시인사이드 만들수 있나요? [21] GCNB갤로그로 이동합니다. 11.03.20 156 0
239267 비트 연산자좀 알려줘 횽 ㅜ.ㅜ [9] ㄴ우라ㅣㄴ우(210.125) 11.03.20 75 0
239266 더블릿이란 사이트 있잖아 여기서 알고리즘 연습하면 [1] 124(118.176) 11.03.20 93 0
239264 아오 !!!!!!!!!슈ㅏ버부리ㅏㅁ ㅓㄴ우ㅏㄹ [5] [외대공대](210.121) 11.03.20 65 0
239262 임베디드 장비에서 안드로이드폰으로 영상 전송 [3] 초보자(111.118) 11.03.20 221 0
239261 변수/메소드/파일 이름 잘짓는법좀? [6] ㅎㅎ(119.71) 11.03.20 69 0
239260 라이프 게임 공부하다 보니 당구도 만들고 싶어졌음 [7] 허허벌판갤로그로 이동합니다. 11.03.20 194 0
239259 안드로이드sdk 설치시 에러 질문쫌 할게영 [3] 일광면(119.198) 11.03.20 80 0
239258 이거 다 풀면 천재다. [5] ㅋㅋ(112.148) 11.03.20 167 0
239257 하나만 간단하게 물어볼꼐 ㅋㅋ [6] C_Perl갤로그로 이동합니다. 11.03.20 78 0
239256 MS 차트 써본 횽아 있습니까?! [3] 허허벌판갤로그로 이동합니다. 11.03.20 92 0
239255 과제도와주세여.. 알고리즘 정올문제 [14] 124(118.176) 11.03.20 243 0
239254 안드로이드 어플 만들어본 형들 있으면 좀 도와줘요 ~ [7] 개념천국갤로그로 이동합니다. 11.03.20 123 0
239253 형들 고민좀 들어줘 [7] ㅁㄴㅇㄴㅁㅇ(211.211) 11.03.20 77 0
239252 @@@@@@@@@@@@@C 이거 하나만 알려주세요 ㅜ [11] 진자늅(124.49) 11.03.20 96 0
239251 C언어 fgets 질문 [5] ㅂㅂ(121.130) 11.03.20 210 0
239250 뉴턴바이러스?? 'ㅁ'? 이게 뭐야? [1] 세상의중심탱갤로그로 이동합니다. 11.03.20 67 0
239248 형님들 비쥬얼스튜됴에서 c로 쓴걸 어셈블러로도 출력하고 싶은데요. [15] 햇병아리(211.52) 11.03.20 131 0
239247 제가 도스 명령어를 잘몰라서 [3] 궁금한데(210.121) 11.03.20 83 0
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
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2