본문 바로가기
728x90

C언어5

함수 포인터(Function Pointer) 와 보이드 포인터(Void*) □ 함수 포인터 - 실행 코드인 함수의 주소를 다루는 포인터 - 함수의 이름은 함수가 있는 메모리의 시작주소가 된다. 함수명이 함수의 메모리의 주소이므로, 함수 포인터에 저장하면 함수를 다양한 방식으로 호출 할 수 있다. 함수 형태는 매개변수의 개수와 자료형, 그리고 반환값의 자료형으로 정의 한다. □ 함수 포인터 배열 - 함수 포인터를 배열에 저장하여 사용할 수 있다. □ 예제로 함수 포인터 살펴보기 함수 포인터를 선언할때 매개변수의 타입 또는 갯수를 설정해주지 않은 경우에는 가리키는 함수의 매개변수 형태와 상관없이 (반환값은 일치해야함) 정상적으로 실행되는 모습을 볼 수 있다. 하지만, 함수 포인터의 매개변수 형태(갯수)를 지정해놓은 경우, 갯수가 맞지 않아 컴파일시 다음과 같은 오류를 보게된다. 에.. 2016. 11. 2.
크러스컬 알고리즘(KruskalMST) □ 크러스컬 알고리즘은 최소비용 생성나무(spanning tree 스패닝 트리)를 찾는 알고리즘이다. (생성나무란 그래프 이론에서 모든 꼭짓점을 포함하는 부분 나무이다.) 크러스컬의 알고리즘은 최소 비용 신장 트리가 최소 비용의 간선으로 구성됨과 동시에 사이클(cycle)을 포함하지 않는다는 조건에 근거하여, 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택. □ 크러스컬 알고리즘의 순서 - 먼저, 그래프의 각 간선(edge)들을 가중치의 오름차순으로 정렬. - 정렬된 간선들의 리스트에서 싸이클을 형성하지 않는 간선을 찾아 최소비용신장 트리(MST)의 집합에 추가 - 만약 사이클을 형성하면 그 간선은 버린다. □ 시간 복잡도KruskalMST(G)입력 : 가중치 그래프 G=(V,E), |V|=n,.. 2016. 9. 29.
포인터와 배열(Pointer & Array) -(2/2) □ 2차원 배열 ○ 2차원 배열은 1차원 배열처럼 배열명과 첨자를 사용하여 선언한다. - 각 배열요소의 형태는 int형 변수 4개짜리 1차원 배열이다. - 전체 배열은 12개의 int형 기억공간이 1차원 배열의 형태로 할당된다. ○ 2차원 배열에서의 1차원배열은 2차원배열의 일부. □ 2차원 배열의 초기화 ○ 1차원 배열처럼 초기화하며 초기화 값은 행 단위로 차례로 저장됨. ex) int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 로 선언과 함께 초기화 된다면 int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ○ 만약 해당 배열 요소를 초기화하지 않으면 0으로 채워진다; ex) int array[3][4]={{1},{5,6},{9.. 2016. 9. 24.
포인터와 배열(Pointer & Array) -(1/2) □ 배열의 이름은 배열의 시작 주소이다. - 배열의 주소접근 예제) 위 그림에서 int형 변수 3개인 배열을 생성하였다. 첫번째 결과값의 배열의 첫번째 인덱스 array[0]의 주소(&)와 같은 주소를 갖는것을 확인 할 수 있다. sizeof 함수를 사용하여 바이트 크기를 측정하면, 64bit인 경우 주소의 크기는 8바이트를 갖는것을 볼 수 있으나 (32bit인 경우 4바이트) sizeof(array) 2016. 9. 9.
포인터(Pointer) □ 포인터는 변수의 메모리 주소를 저장하는 변수다 변수는 메모리 상의 저장 공간이므로 그 위치(주소)를 알면 사용할 수 있다. □ 주소 연산자(&)프로그램이 사용하는 메모리에는 바이트별로 주소값이 있다. 이 값은 0부터 시작하고 바이트 단위로 1씩 증가하므로 2바이트 이상의 크기를 갖는 변수는 여러 개의 주소값에 걸쳐 할당된다. 예를 들어 변수 a가 메모리 100번지부터 할당되었다면 100번지부터 103번지까지 4바이트에 걸쳐 할당된다. 주소는 변수가 할돵된 메모리 공간의 시작 주소를 사용 주소 연산자(&)의 사용법 예제 포인터는 주소를 저장하는 변수로 일반 변수와 마찬가지로 선언한 후에 사용한다. 선언하는 방법은 변수 앞에 *만 붙여주면 된다. 간접참조 연산자(*) 예제) *pa == num ① num.. 2016. 9. 8.
728x90