static ๋ณ€์ˆ˜

์ด์œค์„คยท2024๋…„ 6์›” 20์ผ

ํฅ๋‹ฌ์Œค C์–ธ์–ด ํŠน๊ฐ•

๋ชฉ๋ก ๋ณด๊ธฐ
9/10

๐Ÿค– static ๋ณ€์ˆ˜

  • ๋‹จ ํ•œ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , ๊ทธ ์ดํ›„์—๋Š” ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.
  • ์ดˆ๊ธฐ๊ฐ’์ด ์ง€์ •์ด ์•ˆ๋˜๋ฉด ์ž๋™์œผ๋กœ 0์ด ๋Œ€์ž…

๐Ÿค– ์ง€์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ


์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹น์—ฐํžˆ a๋Š” 2๋ฒˆ ๋‹ค 11์ด๋‹ค.

๐Ÿค– static ๋ณ€์ˆ˜ ์‚ฌ์šฉ

๋ณ€์ˆ˜ a๊ฐ€ static์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ ๊ฐ’์€ "11", "12"์ด๋‹ค.
์ฃผ์˜ํ•  ์ ์€, ํ•จ์ˆ˜ ๋‚ด์—์„œ a๋ฅผ ์„ ์–ธํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , static์ด์—ฌ์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์— ์กด์žฌํ•˜๊ฒŒ๋œ๋‹ค.

  • ์—ฐ์Šต๋ฌธ์ œ 1
#include <stdio.>
void funCount();
int main(void) {
  int num;
  for(num=0; num<2; num++)
    funCount();
  return 0;
}
-----------------------
void funCount() {
  int num = 0;
  static int count;
  printf("num=%d, count=%d\n",
  ++num, count++);
}
  1. int num = 0์ด๊ณ , count๋Š” ์ดˆ๊ธฐ๊ฐ’์ด ์—†์–ด์„œ 0์ด ๋“ค์–ด๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ๋‘˜ ๋‹ค 0์ด๋‹ค.
  2. num=0 ๋ฐ˜๋ณต๋ฌธ)
    ++num, count++: num์„ ์ถœ๋ ฅํ•˜๊ธฐ ์ „์— 1์„ ์˜ฌ๋ฆฌ๊ณ , count๋Š” ์ถœ๋ ฅํ•˜๊ณ ๋‚˜์„œ 1์„ ์˜ฌ๋ฆฐ๋‹ค.
    ์ด๋•Œ์˜ ์ถœ๋ ฅ๊ฐ’์€ 1,0์ด๊ณ  ์ดํ›„ ๊ฐ’์€ ๊ฐ๊ฐ 1,1์ด๋‹ค.
    (์ง€์—ญ๋ณ€์ˆ˜์ธ num์€ ์‚ฌ๋ผ์ง„๋‹ค.)
  3. num=1 ๋ฐ˜๋ณต๋ฌธ)
    ++num, count++: num์„ ์ถœ๋ ฅํ•˜๊ธฐ ์ „์— 1์„ ์˜ฌ๋ฆฌ๊ณ , count๋Š” ์ถœ๋ ฅํ•˜๊ณ ๋‚˜์„œ 1์„ ์˜ฌ๋ฆฐ๋‹ค.
    ์ด๋•Œ์˜ ์ถœ๋ ฅ๊ฐ’์€ 1,1์ด๊ณ  ์ดํ›„ ๊ฐ’์€ ๊ฐ๊ฐ 1,2์ด๋‹ค.
  4. ๋ฐ˜๋ณต๋ฌธ์ด ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด ๋˜์–ด ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚œ๋‹ค.
  • ์—ฐ์Šต๋ฌธ์ œ 2
#include <stdio.h>
void main() {
  int s1,s2;
  s1 = funcA(2);
  printf("F1 = %d,",s1);
  s1 = funcA(3);
  printf("F2 = %d,", s1);
  s2 = funcB(2);
  printf("F3 = %d,", s2);
  s2 = funcB(3);
  printf("F4 = %d ", s2);
}
------------------------
int funcA(int n) {
  static int s = 1;
  s *= n;
  return s;
}

int funcB(int n) {
  int s = 1;
  s *= n;
  return s;
}
  • s1 = funcA(2);
  1. s=1
  2. s = sn; -> s = 12 -> s = 2
  3. s=2
  4. s1=2
  • s2 = funcA(3);
  1. static int s = 1;์€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด s๋Š” ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. s=sn; -> s = 23 -> s = 6
  3. s=6
  4. s1=6
  • s2 = funcB(2);
  1. s=1
  2. s=2
  3. s2=2
  4. ์ง€์—ญ๋ณ€์ˆ˜ s๋Š” ์‚ฌ๋ผ์ง„๋‹ค.
  • s2 = funcB(3);
  1. s=1
  2. s=3
  3. s2=3
  4. ์ง€์—ญ๋ณ€์ˆ˜ s๋Š” ์‚ฌ๋ผ์ง„๋‹ค.

๋”ฐ๋ผ์„œ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋ฉด "F1=2, F2=6, F3=2, F4=3" ์ด๋‹ค.

profile
ํ™”๋ คํ•œ ์™ธ๋ฉด์ด ์•„๋‹Œ ๋‹จ๋‹จํ•œ ๋‚ด๋ฉด

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