본문 바로가기

IT/C언어

C언어본색 연습문제 Part2.3.2


1. 문제 

다음 코드를 분석해서 그 결과를 그림으로 나타내세요.


2. 결과 


3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main()
{
    int a = 10;
    int b = 20;
    int temp;
 
    int* p1 = NULL;
    int* p2 = NULL;
 
    p1 = &a;
    p2 = &b;
 
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
 
    printf("%d %d \n", a, b);
 
    return 0;
 
}
cs


4. 설명



1번 문제를 풀었다면 2번 문제도 어렵지 않게 풀으실 수 있을겁니다.

간단히 말해보자면,

int형 포인터 2개를 선언하고, 각각 포인터 변수에 a, b를 넣고 *참조연산자를 통해서

서로 값을 바꿔주는 코드겠네요.

그래서 a의 값에 20이 들어가고 b의 값에 10이 들어가는 결과가 나왔습니다.

값을 서로 바꿔줄때 덮어씌워지는 p1의 값은 temp로 미리 빼놓은 점을 주목해주세요.

이렇게 서로 값이나 문자열을 바꿔주는 알고리즘은 앞으로도 자주 나올 예정입니다.

꼭꼭 이해하고 넘어가주세요.




'IT > C언어' 카테고리의 다른 글

C언어본색 연습문제 Part2.3.4  (0) 2018.05.04
C언어본색 연습문제 Part 2.3.3  (0) 2018.05.04
C언어본색 연습문제 Part2.3.1  (0) 2018.05.04
C언어본색 연습문제 Part 2-2-5  (0) 2018.05.03
C 언어본색 연습문제 PART2-2-4  (1) 2018.05.03