Numerical Analysis Programming using NRs Eun Joo Rhee
Contents Pointer의 개념 Using Numerical Recipes Using Visual Studio
Pointer의 개념
Pointer 일반 변수와 다르게 메모리의 주소(address) 값만을 저장할 수 있는 특별한 변수 포인터 변수 없이 프로그래밍이 가능하나, 포인터 변수를 이용하면 프로그램이 간결하고 효율적 일반 변수와 구별되며, 변수 선언 방법도 일반 변수 선언과 다름
하나의 변수는 변수 이름, 변수에 저장된 저장 값, 저장공간의 주소 값을 가짐 변수 저장 값 Pointer의 개념 2/13 주소 하나의 변수는 변수 이름, 변수에 저장된 저장 값, 저장공간의 주소 값을 가짐 변수 변수이름 저장 값 12FF7C 일반변수 a int a = 5; 5 12FF78 pi int *pi = &a 포인터 변수 12FF7C
Pointer의 개념 3/13 a : 2161304 5 변수 이름 a 변수 값 5 변수 주소(&a) 2161304 & 기호는 변수의 주소를 참조하는 포인터 연산자
Pointer의 개념 4/13 *p : 2881436 p : 2881448 5 *p 5를 가리키는 포인터변수 p 5를 가지는 값의 주소 &p P를 가리키는 값의 주소
Pointer 선언 1) int *pi; 2) int* pi; C언어는 프리포맷을 지원하므로 공백이 어디에 있는가는 중요하지 않다. C 스팩 문서는 모두 1) 형식으로 되어 있고 C++ 스팩 문서에는 두 형식이 혼재하되 2) 형식이 좀 더 우세하다. Visual C++의 라이브러리인 MFC는 모두 2) 의 형식으로 되어 있다. 1) int *pi; 2) int* pi;
Pointer 증감 일반 변수 포인터 변수 int i = 0; // i+1 = 1 int *pi = &i; // pi+1 = pi+(1*sizeof(int))
*ptr++ *와 ++는 동일한 연산순위를 가지면서 우측 우선의 결합순서를 가진다. Pointer의 개념 7/13 *ptr++ *와 ++는 동일한 연산순위를 가지면서 우측 우선의 결합순서를 가진다. ptr++은 후위연산자이기 때문에 연산이 끝나고 ++ 수행된다. 따라서 *ptr이 먼저 수행되고 ptr++이 수행된다. *ptr과 ptr++로 분리할 수 있다.
Pointer to function Call by Value 변수의 값을 받아와서 새 변수를 생성
Pointer의 개념 9/13 Call by Reference 변수의 주소을 받아와서 그 변수를 이용
Pointer Array (1D) int ptr[]와 int *ptr는 같은 의미 * ptr == ptr[0] *(ptr + i) == ptr[i] *(ptr + 1)은 *ptr + 1과 다른 결과이므로 괄호를 주의! C에서 배열은 zero-origin/zero-offset (0부터 시작) float b[4]: b[0], b[1], b[2], b[3]
Pointer의 개념 11/13 Using nrutil.c Allocation Deallocation
Pointer의 개념 12/13 Pointer Array (2D) 2차원 배열 이름은 이중 포인터 **m
Pointer의 개념 13/13 Using nrutil.c Allocation Deallocation
Using Numerical Recipes
Using Numerical Recipes 1/4 Simple example – SVD
Using Numerical Recipes 2/4 svdcmp.c input output
Using Numerical Recipes 3/4 xsvdcmp.c
Using Numerical Recipes 4/4 xsvdcmp.c
Using Visual Studio
Using Visual Studio 1/10 At 2008
Using Visual Studio 2/10
Using Visual Studio 3/10
Using Visual Studio 4/10
Using Visual Studio 5/10 미리 프로젝트 폴더에 필요한 파일들을 옮겨 놓는다
Using Visual Studio 6/10
Using Visual Studio 7/10
Using Visual Studio 8/10
Using Visual Studio 9/10
Using Visual Studio 10/10
Other questions to heckism@mr.hanyang.ac.kr