C언어/주차별 문제
[10주차] 배열의 Swap
슈슈버거
2023. 6. 6. 15:03
문제

내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void swap(int **arr1, int **arr2); //swap 함수 선언
int main() {
int arr1[5]; //5칸짜리 첫번째 배열
int arr2[5]; //5칸짜리 두번째 배열
for(int i = 0; i<5; i++){ //arr1에 입력받기
scanf("%d", &arr1[i]);
}
for(int i = 0; i<5; i++){ //arr2에 입력받기
scanf("%d", &arr2[i]);
}
//포인터와 연결
int *ptr1 = &arr1;
int *ptr2 = &arr2;
swap(&ptr1, &ptr2); //swap 함수 호출
//결과 출력
for(int i = 0; i<5; i++){
printf("%d ", *(ptr1+i));
}
printf("\n");
for(int i = 0; i<5; i++){
printf("%d ", *(ptr2+i));
}
printf("\n");
return 0;
}
void swap(int **arr1, int **arr2){
int *tmp; //포인터 생성
tmp = *arr1; //arr1의 주소 tmp에 연결
*arr1 = *arr2; //arr1의 주소를 arr2로 갱신
*arr2 = tmp; //arr2의 주소를 tmp로 갱신
}
tmp를 쓰는 원리는 같지만 주어지는 값과 저장하는 위치가 주소임에 주의!!