언어는 과-학인가요?/c언어
(c언어) 함수 호출 - 변수 값 위치 바꾸기 swap
이원자 탄소
2020. 9. 12. 13:34
728x90
#include <stdio.h>
void swap(int x, int y);
int main() {
int a = 100, b = 200;
swap(a, b);
printf("a b: %d %d\n", a, b);
}
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
printf("x y: %d %d\n", x,y);
}
변수값 두개 위치를 바꿔주고 싶을때는 또다른 임시변수를 만들어서 두 변수중 하나의 값을 임시변수에 넣은 다음 그 변수에 남은 변수를 넣고, 임시 변수를 남은 변수에 채워주면 바꿔짐.
/* 뭔가 변수 수가 늘어나면 알고리즘이 하노이 탑처럼 되지 않을까 조심스럽게 추측중 (아닐수도 있음)
이생각하니까 갑자기 하노이 탑 알고리즘 만들고싶어지네 한번 연구해 봐야겠다 */ (잡소리는 주석처리)
암튼 이 방법을 포인트를 써서도 할 수 있다는거지
#include <stdio.h>
void swap(int* x, int* y);
int main() {
int a = 100, b = 200;
swap(&a, &b);
printf("a b: %d %d\n", a, b);
}
void swap(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
printf("x y: %d %d\n", *x,*y);
}
주소값을 올려서 주소 위치로 직접 찾아가서 바꾸게 만드는거임.
콘솔값은 똑같이 나옴
#include <stdio.h>
int main() {
// 포인터 변수가 가리키는 변수에 담겨진 값의 변경을 허용하지 않는 const 선언
int num = 20;
const int* ptr = # //ptr위치에 접근해서 값을 바꿔보는
//*ptr=30; //번경불가능
num=40; //변경가능.
printf("%d", num);
}
변수값을 못바꾼다
#include <stdio.h>
int main() {
int num1 = 20;
int num2 = 30;
int* const ptr = &num1;
//ptr = &num2; //주소 변경 불가능 에러뜸
*ptr = 40; //변경가능
printf("num1변수값= %d\n", num1);
printf("num2변수값= %d\n", num2);
}
주소를 못바꾼다
728x90