1. 배열명의 역할 우리가 어떤 자료형을 선언하면 컴퓨터 메모리 공간상에 할당이 된다고 배웠다. 각 메모리 공간은 접근할 수 있는 주소가 각각 있고 그 크기는 환경에 따라 다르다. 이런 주소들은 숫자로 표현이 가능하지만 모든 연산을 할 수 있는 것은 아니고, 특정한 연산만 수행가능하다. 그 중에서 일반적인 정수, 문자, 실수 등의 자료는 주소를 알기 위해서는 &를 붙였어야 했는데, 배열은 그 이름 자체가 주소에 해당한다. 1-1. 배열명 활용 예를 들어서 int arr[5] 라는 배열이 있다고 해보자. 이 arr[5]를 선언한 순간 int 자료형(4 byte)* 5개 (요소의 갯수)로 20byte가 메모리 공간상에 연속적으로 할당된다. 우리는 배열을 인덱스로 접근할 수 있다. 뿐만 아니라 반복을 통해서 ..
1. 포인터 개요 메모리란 우리가 데이터를 넣고 꺼내는 공간이다. 그래서 컴퓨터가 값을 넣거나 사용하기 위해서는 그 메모리 주소를 알아야만 한다. C는 managed language라고 불리는 이 메모리를 직접 접근해서 관리할 수 있는 언어이다. 메모리에 직접 접근해서 값을 변경하거나 사용하도록 해주는 자료형을 포인터라고 부른다. 1-1. 메모리의 주소와 주소 연산자 포인터는 주소를 담고 있는 자료형이다. 포인터는 해당 주소를 참조하여 시작지점 부터 얼마나까지를 가리키는 변수의 값으로 인식할 지 결정한다. 그러면 해당 주소를 나타내는 연산자가 필요한데 이것이 바로 &연산자이다. (Ampersand, 앰퍼샌드) int a = 10; // 우리 컴퓨터 스택의 임의의 공간에 a라는 변수가 만들어지고 10이라는..
0. 배열을 쓰는 이유 앞에서 배웠듯이 변수를 선언하면 그 자료형의 크기만큼 메모리에 할당된다. 이 때 메모리의 할당은 연속적으로 할당되지 않고 제각각 할당된다. 만약 비슷한 자료에 점화식을 적용하거나 접근하고 싶을 경우 각각 변수를 선언했다면, 선언한 만큼 일일이 적용해줘야한다. 이런 경우 비슷한 자료를 연속적으로 모아서 관리하고 사용할 수 있다. 이렇게 연속적으로 비슷한 자료를 모은 것을 배열(array)라고 한다. 1. 배열 사용법 1-1. 배열 선언 및 초기화 추후 동적할당 챕터가 따로 있어서 malloc을 이용한 동적할당은 나중에 설명합니다. 배열의 선언에는 자료형, 배열의 이름, 배열의 요소 갯수가 필요하다. "자료형" "배열의 이름""[요소의 갯수]" 로 주로 표현된다. 요소의 개수를 정적으..
1. 함수 구조 1-1. 함수 정의 우리가 원하는 함수가 무엇을 받아서 어떤 값을 반환할 지를 정하는 것을 의미한다. (받지 않을 지도 반환하지 않을 수도 있다.) 함수의 기능이 무엇인지 (그래서 함수명을 어떻게 할 것인지), 이를 위해서 무슨 데이터가 필요한지, 어떤 값을 반환할지 정한다. 즉, 함수의 이름, 함수가 받는 데이터(매개변수), 함수의 결과값(반환값) 을 정한다. 함수의 반환형 함수의 이름 (매개변수1, 매개변수2, ...) { 우리가 실행할 코드 return (반환할 결과) // 이 때 반환할 수도 안 할 수도 있다. } 함수의 반환형 함수의 이름 (매개변수1, 매개변수2, ...) : 이 부분을 주로 함수의 원형, 함수의 프로토타입이라고 부른다. 1-2. 함수 호출 함수를 사용하기 위해..
1. while, do while 어떤 조건이 true 라면 계속해서 반복하는 반복문이다. while과 do while의 차이점으로는 최소한 한번 실행하고 조건을 확인하느냐 혹은 조건부터 확인하고 실행하냐에 있다 1-1. while while 문 부터 본다면 a 가 10 미만이라면 계속해서 2를 곱한 값을 할당한다. a가 8 * 2 로 16이 되는 순간 조건문을 나온다. #include int main(void) { int a = 1; while (a < 10) { a = a * 2; } printf("a : %d\n", a); // 16이 출력된다. return 0; } 1-2. do while 최소한 한번을 실행하고 조건을 검사한다. 주로 입력을 한번은 받아야 한다던가 등에서 쓰일 수 있다. 상황에 ..
1. if, if else, if else if else 내가 작성한 소스코드가 전부 실행되는 것이 아니라 조건에 따라 실행되거나 실행되지 않게끔 해야할 경우가 있다. 이럴 때 사용하는 기본적이고 대표적인 문법이 if와 else를 사용하는 문법이다. if 는 ()안에 있는 식을 검사하여 true에 해당하면 {}에 있는 코드를 수행하고 false에 해당하면 수행하지 않는다. #include int main() { int a = 10; int b = 20; if (a > 0) { printf("it's true!\n"); } if (a > 20) { printf("it's false!\n"); //이 문장은 출력되지 않는다. } } 더보기 //출력결과 it's true 만약 실행 시킬 문장이 한 문장이라면 ..