프로그래밍 언어 64

함수

함수란? 매개변수란? 함수를 정의할 때 사용되는 변수를 의미한다. 인수란? 함수가 호출될 때 실제로 담기는 값이다. 함수의 호출 방식 call by value ( = 값에 의한 호출) 함수가 호출될 때 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. 함수에서 값을 복사해서 전달하는 방식으로, 인수로 전달되는 변수를 함수의 매개변수에 복사한다. 이렇게 복사되면 인자로 전달한 변수와는 별개의 변수가 되며, 매개변수를 변경해도 원래의 변수에는 영향을 미치지 않는다. 따라서 원본 값을 바꿀 필요가 없는 경우에 call by value 방식을 이용하면 된다. call ba address ( = 주소에 의한 넘김)

포인터

포인터는 ' * ' 연산자를 쓴다 ' * ' 연산자는 간접 연산자라고도 불리며, 역참조 연산자라고도 불린다. 포인터는 데이터가 저장된 주소값을 가리킨다. 그리고 이 주소로 해당 주소의 값에 접근하여, 값을 변환하거나 동적할당을 할 때 쓴다. int *pa; 예시에서 int는 주소를 구한 변수의 형태이고, *는 포인터의 기호, pa는 포인터의 이름이다. 포인터의 변수가 선언되면 일반 변수와 마찬가지로 메모리에 저장 공간이 할당되며, 그 이후에 변수명으로 사용 가능하다. pa = &a; 만약 변수 a가 메모리 100번지부터 103번지까지 할당되었다면 주소 값이 100이고 pa에 저장된다. 그렇게 되면 pa는 변수 a가 메모리 어디에 할당되었는지 그 위치를 기억하고 있게 된다. pa -> a 이러한 과정을 통..

버블 소트 Bubble Sort

버블 소트 Bubble Sort 버블 소트는 인접한 2개의 레코드를 비교하여 검사하는 알고리즘으로 알고리즘을 처음 접하는 이에게, 교육용 알고리즘으로 접하기 좋다. 정렬 방법으로는 두 숫자를 비교하고, 큰 숫자를 오른쪽 혹은 왼쪽으로 스왑하며 정렬하는 알고리즘이다. 회전 수 만큼 검수하는 수가 차감되어, 결국에는 검수하는 정렬의 길이만큼 회전하여 속도의 문제에서는 실용적이지 못하다. 이하는 코드를 분석하며 더블 소트의 이해를 돕겠다. #include int swap (int *a, int *b) // 주소값을 받아 포인터를 이용한 스왑함수이다. { int temp = *a; *a = *b; *b = temp; } void main() { int arr [10] = { 3, 5, 6, 8, 1..

배열

배열이란? 배열은 같은 자료형만 묶여 놓여진 집합이다. 메모리에 연속적으로 저장해놓고 사용하는 방법으로. 이를 배열이라고 부른다. puls + 비슷한 기능이지만 서로 다른 개념! 구조체란? 구조체란 서로 다른 자료형을 묶을 수 있는 집합이다. 기본 타입만으로는 나타낼 수 없었던 복잡한 데이터를 표현하기 유용하다. 1. 배열의 선언 방법 배열도 그간 이용했던 자료형처럼 선언을 통해서 저장 공간을 확보해야 한다. 다만, 기존에 자료형의 선언과 달리, 하나의 이름으로 한번에 확보하여야 한다. int ary [ 5 ] ; 1. int 는 자료형을 선언한 것이고 2. ary는 배열의 이름의 예시이다. 3. 대괄호 [] 685478 + ( 1 * 4 ) => 685482 ( + 4가 되었다) 배열의 주소에 정수 연..