๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[C programming] ๋‚ด๊ฐ€ ๊ถ๊ธˆํ•ด์„œ ์ •๋ฆฌํ•œ ํฌ์ธํŠธ ๋ฐฐ์—ด char ์ฐจ์ด & ํฌ์ธํŠธ ๋ฐฐ์—ด ํฌ๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/C์–ธ์–ด

[C programming] ๋‚ด๊ฐ€ ๊ถ๊ธˆํ•ด์„œ ์ •๋ฆฌํ•œ ํฌ์ธํŠธ ๋ฐฐ์—ด char ์ฐจ์ด & ํฌ์ธํŠธ ๋ฐฐ์—ด ํฌ๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2023. 8. 22. 11:51
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” ์ตœํ˜ธ์„ฑ ๋‹˜์˜ ์—ดํ˜ˆ๊ฐ•์˜ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„œ์ ์„ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

 

๐ŸŒ char [], char * ์˜ ์ฐจ์ด์ 

// <stdio.h> : ํ•ต์‹ฌ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ํ•จ์ˆ˜๋“ค์„ ์ •์˜
#include <stdio.h>

// #4. ๋‹จ์ˆœ ๋Œ€์ž… ์—ฐ์‚ฐ์ž
int main(void) 
{   
    // ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ (๋ณ€์ˆ˜ ์„ฑํ–ฅ์˜ ๋ฌธ์ž์—ด, ๊ฐ’ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ)
    char *szName[3];
    szName[0] = "HelloWorld";    
    szName[1] = "C Programming";  
    szName[2] = "Studying";   

    for (int i = 0; i < 3; i++)
    {
        printf("szName[%d] -> %s\n", i, szName[i]);
        printf("szName[%d] -> %d\n", i, &szName[i]);
    }

    // charํ˜• ๋ฐฐ์—ด์— ๊ฐ๊ฐ์˜ ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์ €์žฅ (์ƒ์ˆ˜ ์„ฑํ–ฅ์˜ ๋ฌธ์ž์—ด, ๊ฐ’ ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ)
    char szName2[3];
    printf("szName2 -> %s\n", szName2);
    printf("szName2 -> %d\n", &szName2);
    
    char szName3[3];
    szName3[0] = 'a';
    szName3[1] = 'b';
    szName3[2] = NULL;

    printf("%s", szName3);
    printf("%c", szName3[1]);

    return 0;
}

char [] : ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ (๋ณ€์ˆ˜ ์„ฑํ–ฅ์˜ ๋ฌธ์ž์—ด, ๊ฐ’ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ)

char * : charํ˜• ๋ฐฐ์—ด์— ๊ฐ๊ฐ์˜ ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์ €์žฅ (์ƒ์ˆ˜ ์„ฑํ–ฅ์˜ ๋ฌธ์ž์—ด, ๊ฐ’ ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ)

 

*ํฌ์ธํ„ฐ(szName)๋ฅผ ๋„ฃ์–ด์•ผ ๊ฐ’์ด ์ถ”๊ฐ€(?) ๋œ๋‹ค
*ํฌ์ธํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์€ szName2๋ฅผ ์ดˆ๊ธฐํ™” ์•ˆํ–ˆ๋”๋‹ˆ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ x64, x82 ๋ณ„๋กœ ์ปดํŒŒ์ผ ํ•ด๋ณด์•˜๋‹ค

x64 (์™ผ)                                                         x82 (์šฐ)

 

 ๐ŸŒ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ

โœ… ์šด์˜์ฒด์ œ์˜ bit์ˆ˜ ๊ฐ€ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค  (ํ•„์ž์˜ ์šด์˜์ฒด์ œ๋Š” 64bit window 10)

โœ… ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ(double *,char *, int*)์˜ ํฌ๊ธฐ๋Š” ์ž๋ฃŒํ˜•์— ์ƒ๊ด€์—†์ด ๋™์ผํ•˜๋‹ค

โœ…์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค

32bit ๋กœ ์ปดํŒŒ์ผ ์‹œ ํฌ์ธํ„ฐ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ 4๋ฐ”์ดํŠธ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค
64bit ๋กœ ์ปดํŒŒ์ผ ์‹œ ํฌ์ธํ„ฐ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ 8๋ฐ”์ดํŠธ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค

32bit๋Š” 2 ^ 32 = 4,294,967,295 ์˜ ํ‘œํ˜„์ด ๊ฐ€๋Šฅ

32bit์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ ํ•ฉํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ๊ทธ๋Ÿผ ์–ผ๋งˆ์ผ๊นŒ?

(8bit = 1byte) 32bit๋Š” 4byte

 

BUT 1byte๋กœ๋Š” 32bit ์šด์˜์ฒด์ œ์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ธฐ์—๋Š” ๋ถ€์กฑํ•œ ํฌ๊ธฐ

32bit์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์ธ 4byte์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์Œ


64bit๋Š” 2 ^ 64 = 18,446,744,073,709,551,616 ์˜ ํ‘œํ˜„์ด ๊ฐ€๋Šฅ

64bit์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ ํ•ฉํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ๊ทธ๋Ÿผ ์–ผ๋งˆ์ผ๊นŒ?

(8bit = 1byte) 64bit๋Š” 8byte

 

64bit์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์ธ 4byte์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์Œ

x86(32๋น„ํŠธ) ์šด์˜์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์˜ ํฌ๊ธฐ๊ฐ€ 32๋น„ํŠธ ์ฆ‰ 4๋ฐ”์ดํŠธ
x64(64๋น„ํŠธ) ์šด์˜์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์˜ ํฌ๊ธฐ๊ฐ€ 64๋น„ํŠธ ์ฆ‰ 8๋ฐ”์ดํŠธ

 

728x90
๋ฐ˜์‘ํ˜•
Comments