목록self study/언어의 기본부터 (39)
happy coding
포인터와 배열의 관계 배열은 배열의 이름은 그 값을 변경할 수 없는 상수라는 점을 제외하면 포인터와 같기 때문에 포인터 상수(constant pointer)라고 부르며, 포인터 상수는 포인터 변수가 가리키고 있는 주소 값을 변경할 수 없는 포인터를 의미하며, 상수 포인터(pointer to constant)란 상수를 가르키는 포인터를 의미한다. int arr[3] = (1,2,3);//배열 선언 int* ptr_arr = arr;//포인터에 배열의 이름을 대입함 위의 코드에서 포인터에 배열의 이름을 대입한 후, 해당 포인터를 배열의 이름처럼 사용하게 되는데, C언어에서는 배열의 이름을 포인터처럼 사용할 수 있을 뿐만 아니라, 포인터를 배열의 이름처럼 사용할 수도 있다. 하지만 배열의 크기를 계산할 때 배..
TCP school을 보고 정리한 내용입니다. 포인터(pointer) 포인터란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부른다. 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미하며, C언어에서는 이러한 주소값을 1바이트 크기의 메모리 공간으로 나누어 표현한다. 포인터 연산자는 1. 주소 연산자(&) 2. 참조 연산자(*) 가 있다. 주소 연산자(&) 주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환한다. '&' 기호는 ampersand이며, 번지 연산자라고도 불린다. 참조 연산자(*) 참조 연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환한다. 포인터의 선언 타입* 포인터이름;//선언 타입* 포인터이름 = &변수이름;/..
배열(array) 배열이란 같은 타입의 변수들로 이루어진 유한 집합이다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 한다. C언어에서 인덱스는 언제나 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조이다. 1차원 배열 1차원 배열은 가장 기본적인 배열이다. 타입 배열이름 [배열길이]; 타입은 배열 요소로 들어가는 변수의 타입을 명시하며, 배열 이름은 배열이 선언된 후에 배열로 접근하기 위해 사용된다. 배열의 길이는 해당 배열이 몇 개의 배열 요소를 가지게 되는지 명시한다. 여기서 배열을 선언만 하고 초기화하지 않으면, 각..
재귀호출(recursive call) 재귀호출이란 함수 내부에서 함수가 자기 자신을 또다시 호출하는 행위를 의미하는데, 끝없이 반복할 수 있기 때문에 함수 내에 재귀 호출을 중단하도록 조건이 변경될 명령문을 반드시 포함해야 한다. 예를 들어 재귀 호출을 사용하지 않고 1부터 n까지의 합을 구하는 함수를 만들어 본다면, 아래의 코드와 같게 만들게 된다. int sum(int n){ int i; int result = 0; for(i=1 ; i
변수의 유효 범위(variable scope) C언어에서 변수의 선언 위치에 따라 해당 변수의 유효 범위, 메모리 반환 시기, 초기화 여부, 저장되는 장소 등이 변경되는데 변수는 이 기준을 통해 1. 지역 변수 2. 전역 변수 3. 정적 변수 4. 레지스터 변수 로 총 4개로 나눌 수 있다. 메모리의 구조 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하는데, C 프로그램이 운영체제로부터 할당받는 대표적이 메모리 공간은 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 으로 나눌 수 있다. 지역 변수(local variable) 지역 변수란 '블록' 내에서 선언된 변수를 의미한다. 변수가 선언된 블록 내에서만 유효하기 때문에..
함수 프로그래밍에서 함수란 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합으로 정의할 수 있다. 그 종류에는 크게 1. 표준함수 2. 사용자 정의 함수 로 구분할 수 있다. 함수를 사용하는 이유 1. 반복적인 프로그래밍을 피할 수 있다. 2. 모듈화로 인해 전체적인 코드의 가독성이 좋아진다. 3. 프로그램에 문제가 발생하거나 기능의 변경이 필요한 경우에도 손쉽게 유지보수를 할 수 있다. 따라서 하나의 기능을 하나의 함수로 만드는 것이 좋다. 함수의 정의 1. 반환 타입(return type) : 함수가 모든 작업을 마치고 반환하는 데이터의 타입을 명시한다. 2. 함수 이름 : 함수를 호출하기 위한 이름을 명시한다. 3. 매개변수 목록(parameters) : 함수 호출 ..
루프의 제어 일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행하지만 continue 문과 break 문은 이러한 일반적인 루프의 흐름을 사용자가 직접 제어할 수 있도록 해준다. continue 문 continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 한다. 보통은 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용된다. int i; int except_num = 3; for(i=1; i
TCP school 을 보고 정리한 내용입니다. 반복문(iteration statements) 반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많기에 가장 많이 사용되는 제어문 중 하나이다. 종류로는 1. while 문 2. do / while 문 3. for 문 이 있다. while 문 while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복해 실행한다. while (조건식) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행하다. 이렇게 내부의 명령문을 전부 실행하고 나면, 다시 ..