본문 바로가기

전체 글

(64)
[C언어 강좌] #34 포인터의 타입 저번시간에 포인터의 선언 방법을 배웠습니다.이번에는 포인터를 선언할떄 붙는 타입에 대해서 더 알아봅시다. int형 변수의 주소값을 저장하려면 int형 포인터를 선언하면 되고double형 변수의 주소값을 저장하려면 double형 포인터를 선언하면 됐었습니다.그리고 unsigned가 붙어도 마찬가지로 unsigned int는 unsigned int형 포인터 변수가 필요합니다. 그럼 포인터변수의 크기는 몇바이트일까요?sizeof연산자로 출력해보니 4바이트라고 나왔습니다.포인터변수가 int형의 주소를 담을수 있는것이라서 4바이트일까요? 포인터변수가 가리키고있는 곳을 double형으로 바꾸고 double형 포인터로 바꿔도 4바이트로 출력됩니다.여기서 알수있는것은 포인터변수의 크기는 가리키고 있는 변수의 크기와는 ..
[C언어 강좌] #33 포인터 드디어 이제 포인터를 배울 시간입니다. 전에 변수에도 주소가 있다고 했었던적이 있었습니다.그리고 배열과 그 주소도 연관되어있다고 했었죠.변수가 어디에 위치하고있는지 나타내기 위해서 메모리상에서 각각 모두 주소를 가지고있습니다.우리가 현실에서 살고있는 집도 모두 어디있는지 나타내기 위해서 주소를 가지고있죠.만약 택배를 보낼때 주소를 알고있어야 그 위치로 가서 택배를 건네줄수 있을것입니다.마찬가지로 변수를 저장할때도 주소를 알고있어야 그 주소로 가서 값을 저장할수 있을겁니다. 포인터 변수는 바로 그 주소를 저장해둘수 있습니다. 이번 편에서는 간단하게 포인터를 소개하는정도만 하겠습니다. 포인터변수는 위와같이 선언할수 있습니다.int형의 변수를 담을수 있는 포인터 변수를 선언한것입니다.물론 int형뿐만 아니라 ..
[C언어 강좌] #32 자료형의 변환 (형변환) 자료형의 변환은 char형을 int로 바꾸거나 int를 double로 바꾸는식으로 표현방식을 바꾸는것을 말합니다. 형변환에는 두가지 종류가 있는데자동 형 변환과 강제 형 변환이 있습니다.자동 형 변환은 자동으로 발생하는것이고 강제 형 변환은 프로그래머가 직접 형 변환을 해줘서 강제로 변환이 일어나는겁니다. 위 예제는 자동 형변환이 일어나는 상황입니다.실수형인 double형에 int형 정수인 100이 대입되려할때 자동으로 상수 100은 형 변환이 일어납니다.상수가 자동으로 double형으로 변환되어서 100.0으로 변환되서 대입됩니다. 이런식으로 정수형을 실수형으로 바꿀때는 단순히 뒤에 소수점이 붙는것으로 실수형으로 바뀔수 있습니다.하지만 실수형을 정수형에 넣으려할때는 어떻게 변환될까요? 정수형 변수에 실..
[게임리뷰]HAWKEN 안녕하세요. 오랜만에 게임리뷰를 하는시간이 왔네요.이번에 플레이한 게임은 HAWKEN이라는 FPS게임입니다. 로봇끼리 치고박고 싸우는 게임입니다만 1인칭으로 직접 로봇에 탑승해서 싸운다는 느낌으로 만들어져있습니다.스팀에서 플레이할수있고 무료게임입니다. 게임 모드도 여러가지가 있는데 사람들과 대전할수있는것과 코옵플레이로 나뉩니다.데스매치는 계속해서 부활하면서 싸우고 최고득점자가 승리하는방식입니다.그리고 팀데스매치는 팀전으로 싸워서 킬수가 더 많은쪽이 이기는것입니다. 그리고 시즈모드와 미사일어썰트도 있는데 시즈모드는 공중전함에 연료를 공급하면 공중전함이 상대 기지에 포격을 퍼붓습니다.미사일 어썰트는 맵들에 있는 터렛들을 점거하여 상대 기지에 미사일을 발사하면 됩니다. 이 두 모드는 자기 기지를 지키고 상대 ..
[C언어 강좌] #31 상수 , const const 는 constant의 약자입니다.constant는 변함없는 이라는 뜻을 가지고있죠. 변수의 값을 바꾸는것을 방지하기 위해서 존재하는것이죠. const를 붙이면 그 변수는 상수가 되는것입니다. 변수와 달리 상수는 값을 변경할수 없는 읽기만 할수있는것이죠.상수는 이름을 가진 상수와 이름을 가지지 않는 상수 두가지로 나눌수 있습니다. 이름을 가지지 않는 상수를 리터럴 상수라고합니다.우리는 지금까지 리터럴 상수를 많이 봐왔습니다. 이 예제에 있는 10과 20이 리터럴 상수입니다. 여기서 num에 값을 저장하려면 10과 20의 덧셈연산이 먼저 이뤄져야겠죠.하지만 cpu에서 연산을 하려면 10과 20도 메모리상에 존재해야 연산이 가능합니다.그래서 10과 20을 메모리공간에 상수형태로 저장하고 두 상수의 ..
[C언어 강좌] #30 자료형의 크기 sizeof 안녕하세요. 함수에 대해서 어느정도 설명이 끝났습니다.근데 아직 자료형에서 설명하지 못하고 넘어간부분들이 있어서 마저 설명해보려 합니다. 우선 자료형이란것은 데이터를 어떻게 사용하고 크기를 어느정도로 정해줄지를 표현해주는 용도로 사용되는것입니다.저번에 자료형에 대해서 소개하면서 봤던 int의 경우에는 '크기는 4바이트로 하고 그것을 정수로 사용하겠다' 라고 하는겁니다.그것을 알려주기 위한게 바로 자료형이였죠. 근데 int형이라고 무조건 4바이트일까요? 자료형의 크기는 컴파일러마다 다르게 정해져있습니다.물론 대부분 int형은 4바이트로 사용하긴 합니다만 일부 환경에서는 4바이트가 아닐수도 있다는것이죠. 그래서 만약 int를 4바이트로 생각하고 그것을 기준으로 코드를 작성했다면 int를 2바이트로 생각하는 ..
[C언어 강좌] #29 재귀함수 예제 오늘은 재귀함수를 예제와 함께 설명해보려합니다.재귀함수로 만들수잇는 대표적인 예제로는 팩토리얼이 있습니다.확률과 통계 과목에서 배우셨을거라 생각합니다. 1부터 n까지 순서대로 곱하는것이 팩토리얼이죠. 3! = 3x2x1이런식으로 말입니다. 근데 팩토리얼에서도 재귀적인 특징을 볼수있죠. 5! = 5x4! 4! = 4x3! 3! = 3x2! 2! = 2x1! 1! = 1x0! 어떤가요? 재귀적인 특징이 보이시나요? 팩토리얼에서 계속 또다른 팩토리얼을 부르고있습니다.참고로 0! 은 1입니다. 팩토리얼을 구하는 함수가 있다고 했을때 5팩토리얼을 구할때는 5와 4팩토리얼 함수의 반환값을 곱해주면 됩니다.그리고 4팩토리얼 함수는 4와 3팩토리얼 함수의 반환값을 곱해주면 됩니다.그리고 재귀함수가 무한루프에 빠지지 않..
[C언어 강좌] #28 재귀함수 이번에는 재귀함수를 배워봅시다. 우리가 맨날 쓰는 int main(void)함수가 있습니다. main함수에서 다른 함수를 호출하죠,그렇다는 말은 함수에서 다른 함수를 호출할수 있다는 얘기가되죠.근데 함수가 다른함수가 아닌 자기 자신을 다시 호출하면 어떻게될까요?그게 바로 재귀함수입니다. 오늘은 재귀함수에 대해서 설명해드리겠습니다. 이런식으로 함수속에서 자기 자신을 다시한번 호출하는게 재귀함수입니다.하지만 위와같은 코드는 무한반복을 하게 되버립니다. 그렇기때문에 위 예제처럼 재귀함수가 끝날수 있게 만들어줘야합니다.근데 여기서 헷갈리실수도 있는 부분이 있습니다. 자기 자신을 호출했을때 그냥 처음부터 함수를 다시 실행시키는 형태가 아닙니다!위와같은 그림은 틀렸습니다. 함수를 호출하면 또 하나의 함수가 실행되는..