본문 바로가기

Programming/C

(26)
변수 1. 변수 변수에 대한 이야기는 다 한 것 같지만, 사실 아직 하지 않은 이야기가 있다. 바로 변수는 선언된 위치에 따라 전역변수(global variable)와 지역변수(local variable)로 나뉜다는 것. 그리고 이 둘은 다음의 두 가지에 대해 차이점을 보인다. ① 메모리 상에 존재하는 기간 ② 변수에 접근할 수 있는 범위 전역변수는 프로그램이 실행되고 종료될 때까지 메모리 상에 존재한다. 또한 이름에서 알 수 있듯이, 어디서든 접근할 수 있다. 여기서 접근이란 변수에 담긴 값을 사용하거나 변경하는 것을 말한다. 지역변수는 특정 지역에서만 접근할 수 있고, 그 지역에 있을 때만 메모리 상에 존재한다. 2. 지역변수 사실 지역변수는 이미 많이 선언하고 사용해본 변수다. 지역이란 중괄호로 둘러싸인..
함수 1. 함수 함수는 기본적으로 다음과 같은 구조를 취한다. 1 2 3 4 5 6 int main() { } cs 4가지 부분으로 나누어 보면 다음과 같다. int: 반환형. main: 함수의 이름. (): *매개변수의 형태. 위와 같이 아무것도 없는 것은 매개변수 없음을 의미한다. {}: 함수의 몸체(body). 함수의 기능이 정의된다. *매개변수: 인자라고도 하며, 함수를 실행할 때 그 함수로 전달하는 값을 말한다. 예를 들어 두 정수를 입력받아 더한 값을 반환하는 함수는 다음과 같이 선언한다. 1 2 3 4 int add(int num1, int num2) { return (num1 + num2); } cs 함수를 호출하려면 다음과 같이 함수의 이름과 전달할 인자 값만 써주면 된다. 인자 값은 상수든 ..
조건 분기 1. 분기 분기(branch)는 프로그램의 실행 흐름을 선택하는 것을 말한다. 두 수를 입력받아 계산하는 계산기를 만든다고 생각해보자. 입력받는 것까지는 문제 없다. 하지만 그 다음이 문제다. 사칙연산의 결과를 모두 출력할 수는 있다. 하지만 그 중 하나를 고르는 건 어떻게 해야 할까? 이를 위해 필요한 게 분기문이다. 분기문은 기본적으로 조건에 의해 이루어진다 다시 말해, 조건에 따라 실행 여부를 결정한다는 것이다. 물론 무조건 분기도 있다. 하지만 상대적으로 사용 빈도가 낮다. 앞에서 예시로 든 계산기의 경우 다음과 같이 실행 여부를 결정할 수 있다. 수행할 연산을 입력받는다. 입력받은 연산이 +면 덧셈을 수행한다. 아니면 다음 줄로 넘어간다. 입력받은 연산이 -면 뺄셈을 수행한다. 입력받은 연산이 ..
반복문 1. 반복문 문자열 "Hello, world!" 를 5번 출력하려면 어떻게 해야 할까? 당연히 printf("Hello, world!\n"); 를 5번 호출하면 된다. 그럼 문자열 "Hello, world!" 를 10번 출력하려면 어떻게 해야 할까? 당연히 printf("Hello, world!\n"); 를 10번 호출하면 된다. 문자열 "Hello, world!" 를 500번 출력하려면 어떻게 해야 할까? 그 때도 printf("Hello, world!\n"); 를 500번 호출할 것인가? 물론 가능은 하겠지만, (500번을 세야 하니) 코딩 하기도 불편하고, 비효율적이다. 그래서 같은 작업을 여러번 수행하고 싶을 때는 반복문을 사용하는 것이 좋다. C언어에는 while 문, do-while 문, fo..
입력과 출력 1. 키보드로부터의 입력 모니터로 출력할 때는 printf 함수를 사용했듯이, 키보드로부터 입력을 받을 때에도 어떤 함수를 사용해야 한다. 이 때 사용되는 함수가 scanf 함수다. 사용법은 printf 함수와 매우 유사하다. scanf("%d", &num); 정수를 키보드로부터 입력받아 변수 num 에 저장한다는 의미다. 여기서 주목할 점은 변수 앞에 붙은 & 연산자다. 왜 그런지는 조금 뒤에 설명하겠다. 우선은 &를 변수 앞에 붙여줘야 한다는 것만 기억하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include int main() { int num1, num2; int result; printf("첫 번째 정수 입력: "); scanf("%d", &num1)..
연산자 1. 연산자 3 + 5 = 8 위 식의 +와 같이 값의 연산을 위해 사용되는 기호를 연산자(operator), 3, 5와 같이 연산되는 값을 피연산자(operand)라 한다. 초등학교 수학에서 배우는 +, -, ×, ÷ 등이 연산자의 예다. 연산자는 기능에 따라 다음과 같이 나누겠다. 산술 연산자, 비트 연산자, 논리 연산자, 대입 연산자, 관계 연산자, 기타 연산자 참고로 피연산자의 수를 기준으로 해서 다음과 같이 나눌 수도 있다. 단항 연산자(unary operator), 이항 연산자(binary operator), 삼항 연산자(ternary operator) 2. 대입 연산자와 산술 연산자 산술 연산은 사칙 연산과 같이 수치에 대한 연산을 말한다. 연산자 기능 결합 방향 예시 = 우변의 값을 좌변의..
변수와 자료형 1. 변수 수학에서의 변수는 수식에 따라 변하는 값을 의미한다. C언어의 변수는 다음을 의미한다. 어떤 값을 저장할 수 있는 메모리 공간에 붙은 이름. 또는 그 메모리 공간 자체. 쉽게 말해 어떤 값을 담을 수 있는 공간이다. 정확히 말하면, 변수는 운영체제를 통해 할당받은 메모리 공간인 것이다. 할당이란 단어가 낯설다면 전체 메모리 공간에서 일부만 빌려왔다고 생각하자. 그럼 그냥 메모리 공간인데, 왜 변수(Variable)라는 이름이 붙은 걸까? 이유는 간단하다. 메모리 공간에 저장된 값은 언제든 변할 수 있기 때문이다. n이라는 변수에 3을 저장해서 쓰다가 필요하면 5로 바꿀 수도 있다는 것이다. 변수를 만드는 방법은 다음과 같다. 1 int num; cs int: 정수(integer)를 저장할 수 ..
C 프로그램의 기본 구조 1. C 프로그램은 함수로 이루어진다. 1 2 3 4 5 6 7 8 #include int main() { printf("Hello, world!\n"); return 0; } cs 1장에서 위와 같은 프로그램을 작성했다. 가장 기본적인 프로그램이지만, 우리에게 많은 것을 시사한다. 첫 번째 행부터 보자. 1 #include cs 대략적인 의미는 다음과 같다. stdio.h 파일의 내용을 현재 소스 코드 파일에 포함시킨다. #include는 현재 소스 코드에 무언가를 포함시킨다(include)는 의미다. stdio.h 는 파일의 일종이다. 따라서 다음과 같이 이해하고 넘어가면 된다. 모니터에 Hello, world!를 출력하려면 stdio.h 파일의 내용이 필요하다. 두 번째 행은 가독성을 위한 줄바꿈일..