-
[C프로그래밍] 10주차. 포인터C 2024. 5. 8. 14:41
- 포인터는 주소를 가지고 있는 변수
- *포인터는 사용 전에 반드시 초기화를 해야한다*
ㅡ 주소 연산자 &
- 변수의 주소를 계산하는 연산자
- 변수 i의 주소 = &i
ㅡ 간접 참조 연산자 *
- 포인터가 가리키는 값을 가져오는 연산자
- 우선순위가 매우 높다 (괄호 다음으로)
ㅡ #1 변수의 주소 출력
- &변수이름
ㅡ #2 a 와 b 바꾸는 함수
- swap(& a, &b);
ㅡ 포인터 연산
- 증가(++), 감소(--), 덧셈(+), 뺄셈(-) 만 가능
포인터 타입 ++ 연산 후 증가 값 char 1 short 2 int 4 float 4 double 8 - 증가 연산 예제
- 간접 참조 연산자와 증감 연산자
수식 의미 v = *p++ p ㅡ> v 대입 후 p 증가 v = (*p)++ p ㅡ> v 대입 후 가리키는 값에 증가 v = *++p p 증가 후 p ㅡ> v 대입 = *(++p) v = ++*p p 가리키는 값 가져온 후 증가 ㅡ> v 대입 = ++(*p) - 간접 참조 연산자와 증감 연산자 예제
결과값 ㅡ 함수와 포인터
· 값에 의한 호출 (call-by-value)
- C의 기본적인 방법
- 인수의 값이 매개 변수로 복사된다.
· 참조에 의한 호출 (call-by-reference)
- C에서는 포인터를 이용하여 흉내낼 수 있다.
- 인수의 주소가 매개 변수로 복사된다.
· 보통은 값에 의한 호출 사용
· 함수 외부에서 선언된 변수의 값을 변경할 땐 참조에 의한 호출 사용
*초기화가 안된 포인터 사용 X*
*p = &number; *포인터가 아무것도 가리키지 않으면 NULL로 초기화 ㅡ> 하드웨어로 감지 가능, 유효성 여부 판단 쉽다*
*포인터 타입 = 변수의 타입*
int i <> double *pd double형 포인터에 int형 변수의 주소를 대입 ㅡ> 오류
· 두 개 이상의 결과를 반환하는 함수
결과값 ㅡ 포인터와 배열
· 배열 이름이 바로 포인터이다.
· 포인터는 배열처럼 사용 가능
· 배열 이름은 첫번째 배열 원소의 주소
a[0] = *a
a[1] = *(a+1)
a[2] = *(a+2)
a[n] = *(a+n)
ㅡ #3 배열 처리 함수
- 평균을 계산하고 배열을 출력하는 두가지 함수
- double get_array_avg(int values[], int n) 배열 요소의 평균값 계산
- void print_array(int values[], int n) 배열 요소들 출력
배열 요소의 평균을 계산하는 함수 배열 요소를 화면에 출력하는 함수 결과값 ㅡ #4 배열의 값 역순 출력
- 포인터를 이용
- &array[i]
- *(p + i)
결과값 'C' 카테고리의 다른 글
[C프로그래밍] 13주차. 파일 (0) 2024.06.05 [C프로그래밍] 12주차. 구조체 (0) 2024.05.29 [C프로그래밍] 11주차. 문자열 (0) 2024.05.22 [C프로그래밍] 9주차. 함수 (0) 2024.05.02