c언어 포인터는 왜 쓸까? 포인터 쓰는 이유 +( 수 바꾸기 call-by-value, call-by-reference)
1. malloc() 함수로 동적 메모리를 생성할 수 있고, 큰 용량의 데이터를 처리하는데 효율성이 높으며, 데이터를 분석 하기에도 편하다. 효율성이 높은 이유는 포인터는 변수를 참조할때, 속도가 빠르다고한다. (자료구조에서 중요함)
2. 동적 할당된 메모리 영역에 접근과 조작에 용이하다.
결론 - > 속도가 빠르다.
앞으로 c/c++로 자료구조를 하거나 게임산업, 3D으로 취업을 하고싶다면? 포인터를 잘써야됨
속도를 0.1->0.01초로 바꾸는 작업을 다 포인터로 함
문제 A B를 바꾸는 함수를 만드세요. 방법의 수 4개
/*
#include <stdio.h>
#pragma warning(disable:4996);
int a, b;
void tmp() {
int tmp = b;
b = a;
a = tmp;
}
int main() {
scanf("%d %d", &a, &b);
tmp();
printf("%d %d", a, b);
return 0;
}
//방법 1 전역
#include <stdio.h>
#pragma warning(disable:4996);
void tmp(int *a, int *b) {
int tmp = *b;
*b = *a;
*a = tmp;
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
tmp(&a,&b);
printf("%d %d", a, b);
return 0;
}
//방법 2 포인터
#include <stdio.h>
#pragma warning(disable:4996);
void tmp(int &a, int &b) {
int tmp = b;
b = a;
a = tmp;
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
tmp(a, b);
printf("%d %d", a, b);
return 0;
}
//방법3 주소를 이용
#include <stdio.h>
#pragma warning(disable:4996);
int main() {
int a, b;
scanf("%d %d", &a, &b);
a = a ^ b;
b = b ^ a;
a = a ^ b;
printf("%d %d", a, b);
return 0;
}
//방법 4 XOR을 이용함
*/