첫번째 과제가 주어졌다.
1. K.Knock 홈페이지에 가입후 자기소개 남기기
2. 해커스쿨 FTZ Trainer10까지 완료후 인증샷을 첨부파일로 올리기
3. C언어
- 변수란 무엇인가?
- 자료형에는 뭐가 있을까?
- 포맷스트링은 뭐지?
*ppt로 제작해서 올리기
일단 1번과 2번은 완료했다.
이번에는 C언어에 대해서 알아가보도록 하자
1. 변수란 무엇인가?
일단 변수가 왜 필요한지부터 알아보자
게임을 예로들자면 게임 도중 쉽게 볼 수 있는 HP(체력)가 있다. 게임을 진행중에 컴퓨터가 자신의 HP를 기억하지 못한다면 게임이 정상적으로 진행이 될까?
그렇지 않다.
그렇다면 이 HP는 컴퓨터가 어떻게 저장을 할까?
우리가 컴퓨터 사양을 선택할 때 RAM이라는 부품을 종종 볼 수 있다.
이는 메모리라고도 하는데 각각의 메모리는 16진수로 이루어진 주소로 되어있다.
이때 우리가 HP를 저장하고 싶다면 지정된 메모리 주소에 값을 넣어두어야 한다. 또한 HP의 변화가 일어났을 때, 다시 그 주소에서 값을 꺼내와 산수를 통해 새로운 HP값을 다시 그 메모리에 넣어야 한다.
조금 번거롭지 않은가?
이때 필요한것이 변수이다. 변수는 굳이 메모리 주소를 지정하지 않아도 알아서 메모리를 쓸 수 있도록 도와준다.
C언어 변수의 사전적 정의는 다음과 같다
'C 프로그램언어에서 변수는 숫자의 표현에 관련해서 정수형과 실수형이 있다. 이것의 처리는 마이크로프로세서의 ALU와 연관되어 처리한다. 그리고 자료가 있는 위치값인 메모리 주소값으로 처리하는 포인터 변수가 있다. 이것은 CPU의 메모리 체계와 관련되어 있어 CPU 의존적이다. 그리고 관련된 정보 끼리 묶어 처리하는 struct 구조체 변수가 있다.'
나도 무슨 소리인지 쉽게 감이 오지 않는다.
하나씩 파고들어서 전체적인 문장을 이해해보자
먼저 첫번째 문장이다.
'C 프로그램언어에서 변수는 숫자의 표현에 관련해서 정수형과 실수형이 있다.'
여기서 의문점이 하나 들 수 있다. 변수를 왜 정수형과 실수형으로 나누는가?
그 이유는 정수형과 실수형의 표현 방식이 다르기 때문이다.
별모양 상자에 네모난 벽돌이 들어가지 않듯이 모양을 같게 만들어줘야 한다는 것이다.
'이것의 처리는 마이크로프로세서의 ALU와 연관되어 처리한다.'
이건 또 무슨소리인가...
먼저 ALU에 대해 알아보자
ALU란 산술 논리 장치고 두 숫자의 산술연산과 논리연산을 계산하는 디지털 회로이다. 이것은 CPU의 기본 설계블록이라고 한다.
즉, C언어의 정수형 변수와 실수형 변수는 모두 CPU의 ALU라는 디지털 회로에 의해 계산된다는 뜻이다.
'그리고 자료가 있는 위치값인 메모리 주소값으로 처리하는 포인터 변수가 있다.'
자 그다음으로는 정수형,실수형 변수외에도 포인터 변수라는것이 있다고 한다.
포인터란 무엇일까?
포인터는 프로그래밍 언어에서 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다.
Okay 여기까지 이해에 성공했다. 다음문장을 보자
'이것은 CPU의 메모리 체계와 관련되어 있어 CPU 의존적이다.'
우선 아까말했듯이 변수의 메모리 공간주소를 가리키는 변수이니까 CPU의 메모리 체계와 밀접하게 관련되어 있다는 것은
쉽게 이해할 수 있다.
CPU의존적... 가볍게 CPU의 영향을 많이 받는다고 생각하면 될것 같다.
'그리고 관련된 정보 끼리 묶어 처리하는 struct 구조체 변수가 있다.'
방금 우리가 알게된 변수 외에도 struct 구조체 변수가 또 있다는것 같다.
struct 구조체 변수에 대해 알아보자
프로그래밍 언어에서 구조화 된 데이터를 처리할 때 struct를 사용하는데 이를 구조체라고 한다.
이 때, 구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말한다.
관련 컴퓨터 용어로 보면 record와 Object와 비슷한 개념이라고 한다.
'Programing > C' 카테고리의 다른 글
C :: C언어의 기본 (0) | 2017.03.18 |
---|---|
C :: C언어란? (0) | 2017.03.17 |
C :: 포맷스트링 (2) | 2017.03.12 |
C :: 자료형에는 뭐가 있을까? (0) | 2017.03.11 |
C :: C언어란? (0) | 2017.03.09 |