C Programming/윤성우의 열혈 C 프로그래밍

[열혈 C 코딩] Chapter 13 - 포인터와 배열(문제 풀이)

All리얼 개발자 2025. 7. 14. 18:33

 

문제 13-1

문제 1.

#include <stdio.h>
int main(void)
{
    int arr[5] = { 1, 2, 3, 4, 5 };
    int* ptr = arr;
    int i;
    for (i = 0; i < 5; i++)
    {
        *ptr += 2;
        ptr++;
    }
    for (i = 0; i < 5; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

 

설명:

1) 각 배열 요소의 값 2 증가와 동시에 다음 요소로 접근.

*ptr += 2; 
ptr++;

 

 

 

문제 2.

#include <stdio.h>
int main(void)
{
    int arr[5] = { 1, 2,3,4, 5 };
    int i;
    int* ptr = arr;
    for (i = 0; i < 5; i++)
    {
        *(ptr + i) += 2;
    }
    for (i = 0; i < 5; i++)
    {
        printf("%d, ", arr[i]);
    }
    return 0;
}

 

설명: 문제 1번과 비슷한 유형

 

 

 

문제 3.

#include <stdio.h>
int main(void)
{
    int arr[5] = { 1, 2, 3, 4, 5 };
    int i;
    int result = 0;
    int* ptr = &arr[4];
    for (i = 0; i < 5; i++)
    {
        result += *ptr;
        ptr--;
    }
    printf("%d ", result);
    return 0;
}

 

 

 

문제 4.

#include <stdio.h>

int main(void)
{
    int arr[6] = { 1,2, 3, 4,5, 6 };
    int* ptr1 = arr;
    int* ptr2 = &arr[5];
    int temp, i;

    for (i = 0; i < 3; i++)
    {
        temp = *ptr1;
        *ptr1 = *ptr2;
        *ptr2 = temp;
        ptr1 += 1;
        ptr2 -= 1;
    }

    for (i = 0; i < 6; i++)
    {
        printf("%d, ", arr[i]);
    }

    return 0;
}

 

설명: 

1) 이 문제의 핵심 코드

for (i = 0; i < 3; i++) // 배열의 요소 절반까지
    {
        temp = *ptr1;
        *ptr1 = *ptr2;
        *ptr2 = temp;
        ptr1 += 1; // 첫번째 요소와 마지막 요소 교환 후 다음 요소로 이동.
        ptr2 -= 1; 
    }