포인터의 사용 이유
- 포인터를 사용하려면 추가적인 변수 선언이 필요하고 주소, 간접 참조 연산 등 각종 연산을 수행해야 함. but 임베디드 프로그래밍을 할 때 메모리에 직접 접근하는 경우나 동적 할당한 메모리를 사용하는 경우 필요
더보기
임베디드 프로그래밍은 임베디드 시스템(내장형 시스템)을 제어하기 위한 프로그램으로, 오늘날 만들어지는 거의 모든 생활 기기에서 만들어지는 특정 기능을 제어하기 위해 구현됩니다.
ex) 정수기에서 정수, 냉수 등을 구분해 물이 나오게 프로그래밍
/*
* 포인터를 사용한 두 변수의 값 교환
*/
#include <stdio.h>
void swap(int *pa, int *pd); // 두 변수의 값을 바꾸는 함수의 선언
int main(void)
{
int a = 10, b = 20; // 변수 선언과 초기화
swap(&a,&b); // a, b의 주소를 인수로 주고 함수 호출
printf("a : %d, b : %d\n", a, b); // 변수 a,b 출력
return 0;
}
void swap(int *pa, int *pb) // 매개변수로 포인터 선언
{
int temp; // 교환을 위한 임시 변수
temp = *pa; // temp에 pa가 가리키는 변수의 값 저장
*pa = *pb; // pa가 가리키는 변수에 pb가 가리키는 변수의 값 저장
*pb = temp; // pb가 가리키는 변수에 temp 값 저장
}
/*
* 다른 함수의 변수 사용하기
*/
#include <stdio.h>
void swap(void); // 두 변수의 값을 바꾸는 함수 선언
int main(void)
{
int a = 10, b = 20; // 변수 선언과 초기화
swap(); // 인수 없이 함수 호출
printf("a : %d, b : %d\n", a, b); // 변수 a,b 출력
return 0;
}
void swap(void) // 인수가 없으므로 매개변수도 없음
{
int temp; // 교환을 위한 변수
temp = a; // temp에 main 함수의 a값 저장
a = b; // main 함수의 a에 main 함수의 b값 저장
b = temp; // main 함수의 b에 temp 값 저장
}
- main 함수에 있는 변수 a,b를 swap함수 내에서 사용 불가
/*
* 변수의 값을 인수로 주는 경우
*/
#include <stdio.h>
void swap(int x, int y); // 두 변수의 값을 바꾸는 함수 선언
int main(void)
{
int a = 10, b = 20; // 변수 선언과 초기화
swap(a,b); // a,b의 값을 복사해서 전달
printf("a : %d, b : %d\n", a, b); // 변수 a,b 출력
return 0;
}
void swap(int x, int y) // 인수 a,b의 값을 x,y에 복사해서 저장
{
int temp; // 교환을 위한 변수
temp = x; // temp에 x 값 저장
x = y; // x에 y 값 저장
y = temp; // y에 temp 값 저장
}
'C언어 > Study' 카테고리의 다른 글
[C언어] 입력받은 문장 소문자로 변경 (0) | 2024.09.04 |
---|---|
[C언어 공부] 포인터의 대입 규칙 (0) | 2024.08.21 |
[C언어 공부] 주소와 포인터의 크기 (0) | 2024.08.21 |
[C언어 공부] 주소와 포인터 차이 (0) | 2024.08.21 |
[C언어 공부] const를 사용한 포인터 (0) | 2024.08.20 |