ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

โ–ถ swapํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ

์ €๋ฒˆ์— HEXA ์ฒ˜์Œ์œผ๋กœ ์งค ๋•Œ swapํ•จ์ˆ˜๋„ ๋งŒ๋“ค์—ˆ์—ˆ๋‹ค.
๊ทธ๋•Œ๋Š” ํฌ์ธํ„ฐ๋‚˜ ์ฃผ์†Œ๊ฐ’์— ์˜ํ•œ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๋ชฐ๋ผ์„œ ๊ทธ๋ƒฅ ์ธ์ž๋กœ ๋ณ€์ˆ˜๋ฅผ ํ†ต์งธ๋กœ ๋„˜๊ฒจ์ฃผ๋Š”๊ฑฐ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์งฐ๋˜๊ฑธ๋กœ ๊ธฐ์–ตํ•˜๋Š”๋ฐ
์•„๋ฌด๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋˜๊ฑธ๋กœ ๊ธฐ์–ตํ•œ๋‹ค ๊ทธ๋ž˜์„œ ๋Œ€์ฒด ๋ญ์ง€.....
.....ํ•˜๊ณ  ๊ฐ€๋ณด๋‹ˆ๊นŒ!!!! ๊ทธ๋•Œ๋Š” iํ–‰์€ ๊ณ ์ •ํ•ด๋†“๊ณ  ์—ด๋‹จ์œ„๋กœ swap์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—
๋ฐฐ์—ด๋กœ ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ฃผ์—ˆ๋˜ ๊ฑฐ์‹œ์˜€๋˜ ๊ฑฐ์‹œ์˜€๋˜ ๊ฑฐ์‹œ์˜€๋‹ค!!!!

โ€‹

๋ฉ์ฒญํ–Œ.

โ€‹

์•„๋ฌดํŠผ ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—” ์ œ๋Œ€๋กœ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ swapํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋Š”๊ฑด ๋‹น์—ฐํžˆ! ์ฃผ์†Œ๊ฐ’์ด๋‹ค.

swap ( &num1, &num2 ); <- ์š”๋กœ์ฝ”๋กฌ ^~^

void swap(int * ptr1, int * ptr2)
{
    int tmp = *ptr1;
    *ptr1 = *ptr2;
    *ptr2 = tmp;
}

โ€‹

โ–ถ Chap14 ์˜ˆ์ œ ํ’€์–ด๋ณด๊ธฐ

โ€‹

  • ๋ฌธ์ œ1 โ€“ ๋ณ€์ˆ˜ num์— ์ €์žฅ๋œ ๊ฐ’์˜ ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
#include <stdio.h>
int SquareByValue( int num );
//๊ฐ’์—์˜ํ•œ์ฐธ์กฐ(Call-by-value) ๊ธฐ๋ฐ˜์˜์ œ๊ณฑ๊ณ„์‚ฐํ•จ์ˆ˜
//์ธ์ž๋กœ๋ฐ›์€์ˆ˜๋ฅผ์ œ๊ณฑํ•˜์—ฌ์ œ๊ณฑ์ˆ˜๋ฅผreturnํ•œ๋‹ค

void SquareByReference( int * num );
//์ฃผ์†Œ๊ฐ’์—์˜ํ•œ์ฐธ์กฐ(Call-by-reference) ๊ธฐ๋ฐ˜
//์ธ์ž๋กœ๋ฐ›์€์ˆ˜๋ฅผ์ œ๊ณฑํ•˜์—ฌํ•ด๋‹น๋ณ€์ˆ˜์—๋‹ค์‹œ์ €์žฅ

int main()
{
    int num;
    printf("์ˆซ์ž๋ฅผ์ž…๋ ฅํ•˜์„ธ์š”: ");
    scanf("%d", &num);
    printf("\n num = %d , SquareByValue( num ) : %d \n\n", num, SquareByValue( num ) );
    SquareByReference( &num );
    printf(" num = %d\n", num );

    return 0;
}

int SquareByValue( int num )
{
    return (num*num);
}

void SquareByReference( int * ptr )
{
    *ptr *= *ptr;
}

โ€‹

  • ๋ฌธ์ œ2 โ€“ ์„ธ ๋ณ€์ˆ˜์˜ ์ €์žฅ๋œ ๊ฐ’์„ ์„œ๋กœ ๋’ค๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜(Swap3)
#include <stdio.h> 

void Swap3( int * num1, int * int2, int * int3 );

int main()
{
    int num1, num2, num3;

    printf("num1 : ");
    scanf("%d", &num1);
    printf("num2 : ");
    scanf("%d", &num2);
    printf("num3 : ");
    scanf("%d", &num3);

    printf(" num1 : %d\n num2 : %d\n num3 : %d\n", num1, num2, num3);

    Swap3(&num1, &num2, &num3);

    printf(" [ Swap3ํ•จ์ˆ˜์ ์šฉํ›„]\n");
    printf(" num1 : %d\n num2 : %d\n num3 : %d\n", num1, num2, num3);

    return 0;
}

void Swap3( int * num1, int * num2, int * num3 )
{
    int tmp = *num3;
    *num3 = *num2;
    *num2 = *num1;
    *num1 = tmp;    
}
๋Œ“๊ธ€