C์–ธ์–ด

[C์–ธ์–ด] void๋Š” ์ž๋ฃŒํ˜•์ผ๊นŒ?

hyonie 2025. 1. 4. 19:16
ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ void๋ฅผ ์„ ์–ธํ•˜๋Š”๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด void๋„ ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์ผ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  void ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์˜ค๋Š˜์€ ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

voidํ˜•์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

void๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ํ•  ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ, ํƒ€์ž… ์—ญ์‹œ ์—†๋‹ค๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ ์˜ˆ์ œ์—์„œ ๊ธฐ๋ณธ์ ์ธ void์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

int main(void)
{
  void a;
  return 0;
}

 
์ด ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

error C2182: 'a': 'void' ํ˜•์‹์„ ์ž˜๋ชป ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 
์—๋Ÿฌ์˜ ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. void๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ํ•ด๋‹น ๋ณ€์ˆ˜์— ๋ช‡ ๋ฐ”์ดํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ• ์ง€ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ, void๋Š” ํฌ๊ธฐ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•„์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


1. voidํ˜•๋„ ์ž๋ฃŒํ˜•์ผ๊นŒ?

int, char ์™€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์€ ํŠน์ • ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, void๋Š” ๊ทธ๋ ‡์ง€์•Š์Šต๋‹ˆ๋‹ค. 
๋”ฐ๋ผ์„œ, void ๋Š” ์ž๋ฃŒํ˜•์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” "ํƒ€์ž…์ด ์—†๋‹ค"๋Š” ์˜๋ฏธ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด void๊ฐ€ ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#include <stdio.h>

void CoffeeMachine(int price)
{
    if (price == 100)
    {
        printf("๋ธ”๋ž™์ปคํ”ผ\n");
    }
    else if (price == 200)
    {
        printf("๋ฐ€ํฌ์ปคํ”ผ\n");
    }
    else
    {
        printf("์ž˜๋ชป ์ž…๋ ฅ\n");
    }
}

void main()
{
    int coin = 0;
    printf("๋™์ „์„ ๋„ฃ์–ด์ฃผ์„ธ์š”: ");
    scanf("%d", &coin);
    
    CoffeeMachine(coin);
    
    return;
}

 
์ด ํ•จ์ˆ˜๋Š” void๋ฅผ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค.
์ฆ‰, void๋Š” "๋ฐ˜ํ™˜ํ•  ๊ฐ’์ด ์—†๋‹ค"๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋ช…์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
 
 


 

2. voidํ˜• ํฌ์ธํ„ฐ๋ž€?

 

1. voidํ˜• ํฌ์ธํ„ฐ์˜ ์„ ์–ธ

void*๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๋ฉด

int main(void)
{
  void* a; // voidํ˜• ํฌ์ธํ„ฐ ์„ ์–ธ
  return 0; 
}

์œ„ ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด 4๋ฐ”์ดํŠธ(๋˜๋Š” 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 8๋ฐ”์ดํŠธ)์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์Šต๋‹ˆ๋‹ค.
void* ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 

2. voidํ˜• ํฌ์ธํ„ฐ์˜ ํŠน์ง•

void*๋Š” "์ฃผ์†Œ๊ฐ’๋งŒ ์ €์žฅ"ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ ์ฃผ์†Œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ณ€์ˆ˜ a๋Š” 0x100์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋ณ€์ˆ˜ a๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ์ง€ ๋ช…์‹œ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ๊ฐ’์„ ์ง์ ‘ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 


 

3. voidํ˜• ํฌ์ธํ„ฐ์˜ ์ œํ•œ์ 

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

#include <stdio.h>
int main(void)
{
    void* a;
    int b = 1234;
    
    a = &b; // b์˜ ์ฃผ์†Œ๊ฐ’์„ void ํฌ์ธํ„ฐ a์— ์ €์žฅ
    printf("%d\n", *a); // ๊ฐ’ ์ฐธ์กฐ ์‹œ๋„
    
    return 0;
}

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

error C2100: ๊ฐ„์ ‘ ์ฐธ์กฐ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 
์ด์œ ๋Š” void*๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ๋ช‡ ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜์ง€๋งŒ, void*๋Š” ํƒ€์ž…์ด ์—†์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
 
 
 


 

4. voidํ˜• ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?

๊ทธ๋ ‡๋‹ค๋ฉด, ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” void*๋Š” ์™œ ์‚ฌ์šฉ๋ ๊นŒ์š”?
void*๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜ malloc์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜ํ™˜๊ฐ’์€ ํ•ญ์ƒ void*ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

#include <stdlib.h>
int* ptr = (int*)malloc(sizeof(int) * 10);

malloc์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ ํ›„ ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ๋ฐ˜ํ™˜๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋ช…์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ void*๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ์บ์ŠคํŒ…ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
 

๐Ÿงฉ๊ฒฐ๋ก : voidํ˜• ํฌ์ธํ„ฐ์˜ ํ™œ์šฉ๊ณผ ์ดํ•ด

  • void๋Š” ํƒ€์ž…์ด ์ •ํ•ด์ง€์ง€ ์•Š์€ ํฌ์ธํ„ฐ ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • void*๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ๋Š” ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ฒ˜๋ฆฌ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.