위 코드를 하나씩 살펴보겠다.studio.h\` 와 같이 뒤에 .h 가 있는 파일을 헤더파일이라고 하는데 헤더파일을 통해 다른 곳에 써 있는 기능을 가져온다고 생각하면 된다.studio.h 는 STanDrd Input Output 를 말하는데 표준입출력이라고 한다.따
기본적으로 우리는 십진수를 사용하고 있다.예를들어서 150이라는 숫자를 보면$1 10^2 + 5 10^1 + 0\*10^0$ 이다.이것이 십진법의 가장 큰 특징이다. 자리수가 늘어날 때 마다 10씩 곱해진다는 것이다.또한 십진법의 큰 특징 중 하나는 바로 0~9 까
컴퓨터는 수많은 내용을 기억을 해야한다. 게임에서 돈을 벌어서 좋은 장비를 사야하는데 만약 컴퓨터가 내가 돈을 얼마나 가지고 있는지 기억을 못해가지고 있는 돈이 0원이였다가 100만원 이였다가 6만원이였다가 계속 바뀌면 게임을 진행하기 힘들 것이다.그렇기 때문에 컴퓨터
컴퓨터가 생긴 이유가 무엇일까? 여러 가지 이유가 있지만 아무래도 인간이 하기 어려운 복잡한 계산을 빠르게 하기 위해서 탄생한 기계가컴퓨터라고 말할 수 있다.계산이라고 하면 가장 먼저 떠오르는 것이 바로 사칙연산이다.C언어에서 사칙연산은 + , - , \* , / 이렇
지난번에는 여러 연산과 변수에 대해서 배웠었다.그러나 컴퓨터가 연산을 수행할 때 아무런 제약 없이 연산을 수행하는 것은 아니다.왜냐하면 변수마다 각각 보관할 수 있는 데이터의 크기가 정해져 있기 때문이다.예를들어서 int 형의 경우 -2147483648 부터 21474
컴퓨터는 우리가 생각하는 것 만큼 그렇게 똑똑하지 않다.아무리 최신 CPU를 장착한다고 하여도 우리의 컴퓨터는 단지 1와 0만 처리할 수 있다.그렇다면 컴퓨터는 어떻게 "a,b,c"나 "韓" 과 같은 수많은 문자를 처리할 수 있을까?방법이 있다. 바로 이러한 문자를 숫
이번에는 C언어에서 매우 중요한 제어문 - 그 중에서도 조건문을 배우겠다.우리가 자판기에서 음료를 뽑을 때 다음과 같은 과정이 자판기 내부에서 진행이 된다.돈을 넣은다, 지폐인가?, 액수가 충분한가? 이러한 질문들은 맞다, 아니다로 나뉘게 된다. 이러한 것들을 조건문이
컴퓨터가 발명된 이유를 이전에 바로 계산하기 위해서 라고 했었다. 하지만 계산 말고도 컴퓨터가 발명된 또 다른 이유가 하나 더 있다. 바로 노가다 즉, 반복 연산 때문이다.만약 누군가 우리에게 1부터 20까지 더하는 프로그램을 만들어 달라고 하면 우리는 단순히 prin
C 프로그래밍을 하려면 컴파일러가 있어야 한다. 하지만 리눅스에서는 Visual Studio 계열의 프로그램을 사용할 수 없다 왜냐하면 Visual Studio 는 마이크로소프트사의 제품이기 때문이다.하지만 훌륭한 오픈소스 개발자들이 리눅스용 컴파일러를 개발했는데 그
이번에는 if문의 친구인 switch 문에 대해서 알아보자. 이 친구가 if의 친구인 이유는 그만큼 if문과 정말 비슷하기 때문이다. 아래의 간단한 강아지 시뮬레이션을 보자. 위와 같이 3가지의 명령어에 따라서 반응하고 알 수 없는 명령어의 경우 "무슨 명령인지 못
모두 그동안 배워서 알고 있듯이 C언어에는 변수마다 형(type)이 있다.int a; 를 한다면 a는 int 형, double b; 를 한다면 b는 double 형이다. 그런데 가끔 프로그래밍을 하다보면 형이 다른 변수끼리 대입하는 연산이 필요한 경우가 생긴다. 예를
앞선 포스팅에서 한 가지 의문점을 가지고 마무리 했었다.왜 float의 지수의 범위가 0~255 가 아니고 1~254일까???당연히 들 수 있는 의문점이다 float의 지수가 8비트이니까 당연히 0부터 255까지라고 생각할 수 있다. 좋은 질문이다. 0 과 255 가
여태까지 우리는 컴퓨터의 메모리를 읽을 때 변수를 통해서 메모리를 읽고 쓰고를 했다. 변수 이름 하나가 그 변수 타입에 해당하는 만큼의 공간을 메모리상에 나타내고 있다. 예를 들어서 int a 를 하면 int 는 4바이트니까 변수 a 는 메모리상에 4바이트 공간을 나
여기서 특이하게 배열의 크기를 지정할 때 특정 값을 준 것이 아니라 변수를 주었는데 이는 원래 C에서는 불가능하다. C++에서는 가능하지만 말이다. 그말은 즉 사실 배열의 크기를 지정할 떄 변수를 사용하면 안된다는 것이다. 이에 대한 내용은 추후 다시 다루어 보자.약수
저번에 배열에 대해서 배웠었다. 그렇다면 여기서 똑똑한 사람은 이러한 질문을 할 수 있다.배열안에 배열이 있을 수 있을까?배열의 배열을 생각하는 대단한 생각이다. 배열의 배열이라는 말을 좀 더 명확하게 이해해보자 ' int 형의 배열' 이라는 말은 배열의 각 원소가
1. 포인터를 이해하기 앞서 앞서 우리는 모든 데이터들을 메모리 상에 특정한 공간에 저장을 하였다. 앞으로 편의를 위해서 이러한 데이터들을 저장한 특정한 공간을 '방' 이라고 하겠다. 각 방에는 데이터가 들어가게 되는 것이다. 보통 한 방의 크기를 '1 바이트' 라
우리가 만약에 최대값과 최소값을 반환하는 것을 만들고 싶다고 해보자. 그래서 아래와 같이 코드를 만들었다.그런데 만약에 실제로 프로그래밍을 하다가 어떠한 두 변수의 최대값과 최솟값을 구하는 일이 계속해서 필요하다면 위 코드를 복사 붙여넣기를 하는게 좋을까? 만약 이러한
문자열은 영어로 string 이라고 한다. 그런데 string 의 사전적인 뜻은 '실'이다. 왜 실 일까?그 이유는 문자열들이 정말로 실 처럼 문자들이 쭈르륵 나열되어 있기 때문이다.그렇다면 컴퓨터는 문자열을 어떻게 저장할까? 앞서 문자들이 쭈르륵 나열되어 있다고 말했
기존에는 작은 프로그램들만 만들어 보았는데 이번에는 여러 작은 기능을 하는 프로그램을 묶어서 하나의 거대한 프로그램을 만드는 프로젝트를 해보자.우리는 이제 도서 관리 프로그램을 만들어 볼 것이다. 우리가 도서관을 만든다고 했을 떄 그 도서관을 운영하는데 필요한 프로그램
우리가 이번에는 심즈라는 게임을 만들고 있다고 생각해보자무슨 게임인지 잘 모르는 사람들을 위해서 조금 설명해주자면 이 게임은 사람 캐릭터를 육성하는 게임이다. 근데 게임을 플레이 하는 유저가 사람 한 명을 추가 했다고 생각해보자. 그러면 어떻게 처리해야 할까?일단 가장
사실 공용체(union)은 그리 많이 사용하는 기능은 아니다. 그래도 C 언어에서 제공하는 것들 중 하나이니까 살펴보자. 공용체는 구조체와는 달리 메모리를 '공유' 한다.위 그림을 보아도 알 수 있듯이 공용체는 멤버들의 시작 주소가 동일하다. 따라서 j 의 값을 변경함
실행 결과분명히함수에서 a 의 값을 2로 바꿔주었지만 실제로 a 를 출력해보면 2로 안바뀌고 3으로 나온다.이러한 이유는 어떠한 함수에서 정의한 변수는 그 함수 내에서만 접근할 수 있기 때문이다.이와 같이 해당 변수 내에서만 접근할 수 있는 변수를 지역 변수라고 한다.
우리가 지금까지 만든 소스 코드는 모두 하나의 소스 파일에서 만들었다. 사실 이는 큰 문제가 아니였다. 왜냐하면우리가 만든 소스 코드가 그리 길지도 않고 혼자 사용하기 때문이다. 그러나 실제로 회사에서 일을 하면 소스 코드가 수천에서 수만줄까지 가고 여려명이서 협업하여
지금까지 헤더 파일에 함수의 원형만 넣었다. 그러나 헤더 파일에는 다음과 같은 것도 함께 주로 쓰는 경우가 대다수이다.(물론 헤더 파일에 일반 C 코드도 넣을 수 있지만 권장하지 않는다.)전역 변수구조체, 공용체, 열거형함수의 원형일부 특정한 함수 (인라인 함수.. 나
때때로 우리가 만드는 함수는 리턴값이 없을 수 있다. 예를 들어서 int 변수에 1 을 더하는 함수를 생각해보자.실행 결과위 add_one 함수는 인자로 전달 받은 포인터가 가리키는 값에 +1 을 수행하고 종료된다. 그리고 return 을 수행하는 문장이 없다. 왜냐하
우리가 프로그램을 만들어보면서 이러한 문제에 봉착한 적이 있을 것이다.배열의 크기를 자유 자재로 다룰 수 있으면 얼마나 좋을까?맞다. 우리는 지금까지 배열을 정의할 때 배열의 크기를 컴파일 시간에 확정해야 했다. 즉, 컴파일러가 배열의 크기를 추측할 필요 없이 명확하게
여기까지 강좌를 잘 따라 오면서 프로그램을 만들어 보았다면 다음과 같은 의문이 들을 수 있다.데이터를 어떻게 프로그램이 종료되어도 저장할 수 있을까?사실 그 방법은 간단하다. 특정한 데이터가 있으면 이를 하드디스크에 저장하면 된다.여태까지 우리가 만든 프로그램의 변수들
원본 : https://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization번역본 : https://www.joinc.co.kr/w/Site/C/Documents/C