10장 포인터

Download Report

Transcript 10장 포인터

고급 C 프로그래밍
Chapter 10. 포인터
포인터(pointer)

포인터 변수


데이터가 저장된 주기억장치의 주소를 저장하는 변수
포인터 변수 선언

자료형 *포인터 변수명;
char *p;
int *q;
double *r;
포인터(pointer) (2)

포인터 변수에 주소 대입

포인터 변수명 = &변수명;
char ch=‘a’, *p;
int in=30, *q;
double f=3.5, *r;
p=&ch;
q=∈
r=&f;
포인터(pointer) (3)

포인터를 통한 간접 참조

*포인터 변수명
ch=‘b’;
 *p=‘b’;
in=in+5;
 *q=*q+5;
printf(“%lf\n”, f);  printf(“%lf\n”, *r);
변수교환과 포인터 교환
int a=100, b=200, temp;
int *p1=&a, *p2=&b, *ptemp;
temp=*p1;
*p1=*p2;
*p2=temp;
ptemp=p1;
p1=p2;
p2=ptemp;
포인터의 덧셈과 뺄셈

포인터변수+1 / 포인터변수-1
char *ptr;
ptr++; 또는 ptr--;
 ptr의 값을 +1 또는 -1
int *ptr;
ptr++; 또는 ptr--;
 ptr의 값을 +4 또는 -4
double *ptr;
ptr++; 또는 ptr--;
 ptr의 값을 +8또는 -8
포인터와 배열

int arr[10];

arr은




배열 각 원소의 주소


배열의 이름
배열의 시작 주소
&arr[0]의 값
&arr[i] == arr+i
배열 각 원소의 값

arr[i]==*(arr+i)
포인터와 배열(2)

포인터 변수를 이용한 배열 참조

포인터 변수명=배열명;
int arr[10];
int *p;
p=arr;
 arr[i] 대신 *(arr+i) 또는 *(p+i) 또는 p[i]
포인터와 함수

포인터 매개변수의 간접 참조(call-by-reference)


함수의 호출
함수명(&인수명)
함수의 정의
반환값 자료형 함수명(자료형 *포인터 변수명){
}
포인터와 함수 (2)

배열을 함수의 매개변수로 사용


함수의 호출
함수명(배열명)
함수의 정의
반환값 자료형 함수명(자료형 *포인터변수명){
}