[C] 포인터 활용
2021. 1. 6. 15:19ㆍ프로그래밍 공부/C 공부
포인터 활용 예시
(1) 함수내의 지역변수 변경
아래의 경우 main에서 func를 호출하고 매개변수 data에 corn을 대입하였을 경우 cream은 10으로 되겠지만, 그 아래행 corn = 4에서 오류가 발생한다.
#include <stdio.h>
void func(short data) ;
void main()
{
short corn = 10;
func(corn);
}
void func(short data)
{
short cream = 0 ;
cream = data ;
corn = 4 ;
}
하지만 포인터를 활용한다면 func는 ptr이라는 포인터를 매개변수고 갖고, 이 포인터에는 corn의 메모리 주소가 할당된다.
cream = *ptr은 cream에 포인터가 가리키는 데이터를 할당하므로 cream = 10을 의미하며, 그 아래행은 포인터가 가리키는 주소의 데이터를 변경하기 때문에 corn = 4로 변경된다.
#include <stdio.h>
void func(short *ptr) ;
void main()
{
short corn = 10;
func(&corn);
}
void func(short *ptr)
{
short cream = 0 ;
cream = *ptr ;
*ptr = 4 ;
}
(2) 두 변수의 값을 변경하는 함수(swap) 구현
두 변수의 값을 바꿔야하는 상황에서 활용할 수 있음. 만약 포인터를 활용하지 않는다면 함수를 이용해 변수를 변경할 수 없음. 함수를 이용할 수 없다면 코드의 활용성이 떨어질 수 있으므로, 포인터를 활용하는것이 유리함.
#include <stdio.h>
char swap(char *pb, char *ps);
char main()
{
char big = 5;
char small = 15;
big < small && swap(&big, &small); // if문보다는 조건수식을 활용
printf("big은 %d 이므로 small %d 보다 큽니다.\n", big, small);
}
char swap(char *pb, char *ps)
{
char tmp = *pb;
*pb = *ps;
*ps = tmp;
return 0;
}
'프로그래밍 공부 > C 공부' 카테고리의 다른 글
[C] 문자, 문자열 (0) | 2021.01.06 |
---|---|
[C] void 포인터 (0) | 2021.01.06 |
[C] 포인터 개념 (0) | 2021.01.06 |
[C] if 조건문 (0) | 2021.01.05 |
[C] 지역변수와 전역변수(+ extern, static, const) (0) | 2021.01.05 |