- 2개의 배열 크기 입력받기(malloc 함수를 이용해 동적할당 받아 포인터형으로 선언)
- 배열들의 요소들을 입력받기
- 배열 한번에 출력하는 함수 작성(포인터 사용)
- 이중포인터 이용해 출력함수가 2개의 배열 순서 바꿔서 출력하도록
#include <stdio.h>
#include <stdlib.h>
void input(int* pmat, int size);
void output(int* pmat1, int* pmat2, int size1, int size2);
void change(int** pmat1, int** pmat2,int* p1, int*p2);
int main(void) {
int n1, n2;
printf("각각의 배열 몇개:");
scanf("%d %d",&n1,&n2);
int* mat1=(int* )malloc(sizeof(int)*n1);
int* mat2=(int* )malloc(sizeof(int)*n2);
input(mat1,n1);
input(mat2,n2); //값을 입력하기
output(mat1,mat2,n1,n2);//원래 배열 순으로 출력
change(&mat1,&mat2,&n1,&n2);//두개의 배열 순서 바꾸기
output(mat1,mat2,n1,n2);//바꾼 후의 배열 순으로 출력
free(mat1);
free(mat2);
return 0;
}
void input (int* pmat, int size){
for(int i=0; i<size; i++){
printf("배열의 %d번째 요소 입력:",i);
scanf("%d",pmat+i);
}
}
void output(int* pmat1, int* pmat2, int size1, int size2){
for(int i=0;i<size1+size2;i++){
if(i<size1)
printf("%d",*(pmat1+i));
else{
if(i==size1)
printf("\n");
printf("%d",*(pmat2+i-size1));
}
}
printf("\n");
}
void change(int** pmat1, int** pmat2,int* p1,int* p2){// 중요!!
int t=*p1;
*p1=*p2;
*p2=t;
int * temp=*pmat1;
*pmat1=*pmat2;
*pmat2=temp;
}
처음에 입력받는 n1과 n2는 배열을 바꿔줘도 자동으로 바뀌지않았다.
그래서 배열 바꾸는 함수에 n1과 n2 주소값을 넣어줘서 수동으로 바뀌게 하였다.
더보기
이게 최적의 정답같지는 않다.
서로 바꾸는 함수 잘기억해두기!
'Computer Science > C\C++' 카테고리의 다른 글
[C언어] 헤더파일 디자인과 활용 (0) | 2021.06.02 |
---|---|
[C언어] 파일 입출력 (0) | 2021.06.02 |
[C언어] 구조체 (Structure) (0) | 2021.05.26 |
[C언어] 문자 역으로 출력, strncat/strlen활용 (0) | 2021.05.26 |
[C언어] puts, printf / gets, scanf(scanf_s) (0) | 2021.05.22 |