왜 배열C의 값이 출력이 안될까요?
가림새
질문 제목 : 질문 내용 :
#includestdio.h
void merge(int *, int *, int *, int );
main()
{
int arr[4] = { 1, 3, 5, 7 };
int arr1[4] = { 2, 4, 6, 8 };
int arr2[8] = { 0, };
int n = sizeof(arr) / sizeof(arr[0]);
merge(arr, arr1, arr2, n);
}
void merge(int * a, int * b, int * c, int size)
{
int i;
int j;
int n = 2 * size;
for (i = 0; i size; i++)
{
if (*(a + i) *(b + i))
{
*(c + i) = *a + i;
*(c + i + 1) = *b + i;
}
printf_s(%d, *(c + i)); }
}
이런 소스가 있는데.arr2의 5번쨰 원소부터는 어떻게 출력을 해야할지 모르겠네요
-
By은지
arr배열과 arr1배열의 각 요소를 arr2 에 교대로 집어넣으려는 것 같습니다.
*(c + i) = *a + i;
*(c + i + 1) = *b + i;
그렇다면 이 로직은 틀렸습니다.
i값이 0일때 arr2[0] 에 a[0] 이 들어가고, arr2[1] 에 b[0] 이 들어갑니다.
i값이 1일때 arr2[1] 에 a[1] 이 들어가면서 그 자리에 먼저 들어있던 b[0] 이 사라지네요.
위 로직을 수행하고 난 뒤에 arr2[] 에는 5개의