C์–ธ์–ด์˜ ๊ฝƒ๐ŸŒน(3)

@Super_E๋Œ๋ฆผยท2024๋…„ 4์›” 6์ผ
post-thumbnail

ํฌ์ธํ„ฐ ์—ฐ์‚ฐ

์ €๋ฒˆ ๋‚ด์šฉ์—์„œ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ ๊ฐ’์„ ๋ฐ”๊ฟจ์„ ๋•Œ main ํ•จ์ˆ˜์—์„œ๋„ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค๋Š”๋ฐ
์ด๋ฒˆ ๋‚ด์šฉ์—์„œ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด์šฉ์— ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ์—ฐ์‚ฐ์ž๋“ค์€ ๋™์ž‘ํ•˜๋Š”๋ฐ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์ด ์ˆœ์„œ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ์›ํ•˜๋Š” ๊ฐ’ ๋˜๋Š” ์›ํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์กฐ์—ฐ์‚ฐ์ž, ์ฆ๊ฐ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โญ๏ธ ์šฐ์„ ์ˆœ์œ„(f โ†’ s) : ์ฆ๊ฐ ์—ฐ์‚ฐ์ž(++, --) โ†’ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž(*)
์™œ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋งŒ ๋น„๊ตํ•ด๋ดค๋ƒ๋ฉด ๋‹ค๋ฅธ ์—ฐ์‚ฐ๋“ค์€ ๋‹ค ์ฐธ์กฐ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฝ”๋“œ

ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Ex)

#include <stdio.h>

int main(){
	int *p = NULL;
	int num = 100;
	p = &num;
	
	*p += 5; โ€ขโ€ขโ€ข 1)
	printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
	printf("num ๊ฐ’ : %d\n\n", num);

	*p++; โ€ขโ€ขโ€ข 2)
	printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
	printf("num ๊ฐ’ : %d\n\n", num);

	(*p)++; โ€ขโ€ขโ€ข 3)
	printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
	printf("num ๊ฐ’ : %d\n", num);
	return 0;
}

ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+=, ++(ํ›„์œ„), ()++

  1. +=
    ์šฐ์„ ์ˆœ์œ„(f โ†’ s) : * โ†’ +=
    *p += 5;
    *p โ‡’ num์ด๋‹ˆ๊นŒ num๋ณ€์ˆ˜์— 5๊ฐ€ ๋”ํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
     printf("num ๊ฐ’ : %d\n\n", num);
    ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : 105
     num ๊ฐ’ : 105
    ์ •์ƒ์ ์œผ๋กœ 5๊ฐ€ ๋”ํ•ด์ง„ ๊ฒƒ์„ ๋ณด์•˜๊ณ  ์›๋ณธ์˜ ๊ฐ’๋„ +5๊ฐ€ ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ++(ํ›„์œ„)
    ์šฐ์„ ์ˆœ์œ„(f โ†’ s) : ++/-- โ†’ *
    *p++;
    *p โ‡’ num์ด๋‹ˆ๊นŒ num๋ณ€์ˆ˜์— 1์ด ๋”ํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
     printf("num ๊ฐ’ : %d\n\n", num);
     ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : ?
     num ๊ฐ’ : 105
    *p์˜ ๊ฐ’์ด ?๋กœ ๋‚˜์™”๋Š”๊ฐ€.. 106์ด ์•„๋‹ˆ๊ณ  ์™œ ๋ฌผ์Œํ‘œ๊ฐ€ ๋‚˜์™”์„๊นŒ์š”? ์ด๋Š” ๋ฐ”๋กœ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„์— ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    ํ›„์œ„ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๊ธฐ ๋•Œ๋ฌธ์— ++๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    [p์— ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’ + 4]๊ฐ€ ๋˜๋Š”๋ฐ ์™œ 1์ด ์•„๋‹ˆ๊ณ  4์ธ๊ฐ€? ์ด๋Š” ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜• ํฌ๊ธฐ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ๐Ÿ’ก ์ž๋ฃŒํ˜• ํฌ๊ธฐ
        `int` : 4byte / `double` : 8byte / `float` : 4byte / `char` : 1byte
    1์ด๋ฉด [์ž๋ฃŒํ˜• ํฌ๊ธฐ * 1]๋งŒํผ ์ €์žฅ๋œ ์ฃผ์†Œ์— ๋”ํ•˜๊ณ  ๋นผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    1์ธ ๊ฒฝ์šฐ๋งŒ ์ ์–ด๋†จ๋Š”๋ฐ ์ด๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ++ ๋˜๋Š” --์ผ๋•Œ๋งŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„ ๋ฐœ์ƒํ•˜๊ธฐ์— ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
  3. ()++
    ์šฐ์„ ์ˆœ์œ„(f โ†’ s) : () โ†’ ++/-- โ†’ *
    (*p)++;
    ์ด๋•Œ๋Š” ์ˆ˜ํ•™์ ์ธ ๊ฐœ๋…์—์„œ์™€ ๊ฐ™์ด ์†Œ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ์—ฐ์‚ฐ์„ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๋ฐ–์— ์žˆ๋Š” ์—ฐ์‚ฐ์„ ์‹œํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    *p -> ++
    printf("ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : %d\n", *p);
     printf("num ๊ฐ’ : %d\n\n", num);
    ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ : ?
     num ๊ฐ’ : ?
    ์™œ ์ด๋ ‡๊ฒŒ 106์ด ์•„๋‹ˆ๋ผ ?๊ฐ€ ๋‚˜์™€ ๊ฐ’์„ ํ™•์ • ์ง€์„ ์ˆ˜ ์—†๋Š”๊ฐ€ ํ•˜๋ฉด์€ ์œ„์—์„œ๋Š” ์ฃผ์†Œ์— ์—ฐ์‚ฐ์„ ํ•œ๊ฑฐ๊ธฐ ๋–„๋ฌธ์— ์ œ๊ฐ€ ์ง€๊ธˆ์œผ๋กœ์„œ ์•Œ ์ˆ˜ ์—†๊ณ  ์ง์ ‘ ๋””๋ฒ„๊น…์„ ํ•ด๋ด์•ผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฒˆ์™ธ(์ „์œ„)
    ์šฐ์„ ์ˆœ์œ„(f โ†’ s) : ++/-- โ†’ *
    ++*p;
    ์ด๋–„ ์ „์œ„๋Š” ํ—ท๊ฐˆ๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด์„œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ++(*p)๋กœ ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    ์ฆ๊ฐ์—ฐ์‚ฐ์ž๊ฐ€ ์ „์œ„์ผ๋•Œ๋„ ํ›„์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ™์€ ์ด์œ ๋กœ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€