문제 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;
}
'C Programming > 윤성우의 열혈 C 프로그래밍' 카테고리의 다른 글
| Chapter 15 도전! 프로그래밍 2(문제 풀이) (1) | 2025.07.19 |
|---|---|
| [열혈 C 코딩] Chapter 14 - 포인터와 함수(문제 풀이) (0) | 2025.07.16 |
| [열혈 C 코딩] Chapter 12 - 포인터의 이해(문제 풀이) (0) | 2025.07.06 |
| [열혈 C 코딩] Chapter 11 - 1차원 배열(문제 풀이) (0) | 2025.07.03 |
| Chapter 10 도전! 프로그래밍 1(문제 풀이) (0) | 2025.04.09 |