์ƒˆ์†Œ์‹

๐Ÿ‘ฉ‍๐Ÿ’ป C

C ์–ธ์–ด - ๋ฐฐ์—ด (array ) , 2์ฐจ์› ๋ฐฐ์—ด, ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ (pointer)

  • -

 

*๋ฐฐ์—ด (array)

 

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

๋ณ€์ˆ˜ ์ด๋ฆ„ ๋’ค์— ๋Œ€๊ด„ํ˜ธ [ ] ๋ฅผ ๋ถ™์—ฌ size๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ• ๋•Œ๋Š” ์ค‘๊ด„ํ˜ธ { } ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

*๋ฐฐ์—ด์˜ ์„ ์–ธ

์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[๋ฐฐ์—ด์˜ ํฌ๊ธฐ(์š”์†Œ์˜ ๊ฐœ์ˆ˜)] = {๊ฐ’, ๊ฐ’, ๊ฐ’ ,,,,,,,,,}; 

(์ดˆ๊ธฐํ™”๊ฐ’์€ ์—†์–ด๋„ ๋œ๋‹ค.)

๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์€ ์š”์†Œ(element)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ์ž๋ฆฌ๊ฐ’(index)์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ์ฆ‰, ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋Š” 0์ด๋‹ค.

๋งŒ์•ฝ ์ธ๋ฑ์Šค๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋ฒ”์œ„์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค. (์—‰๋šฑํ•œ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ๊ฐ’์— ์ด๋ฏธ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

 

* ๋ฐฐ์—ด ์„ ์–ธ์‹œ์˜ size ์ƒ๋žต
int arr1[] = {10, 20, 30};  // ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•ด ์ค„๋•Œ๋Š” ํฌ๊ธฐ๋ฅผ ์ƒ๋žตํ•ด๋„ ์•Œ์•„์„œ ํฌ๊ธฐ๊ฐ€ ์„ค์ •๋œ๋‹ค.
int arr2[] ;   // ๊ฐ’๋„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ , ํฌ๊ธฐ๋„ ์ƒ๋žตํ•œ๋‹ค๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋‘๋ฒˆ์งธ ์ค„์ฒ˜๋Ÿผ, ์ดˆ๊ธฐ๊ฐ’๊ณผ size๋ฅผ ๋ชจ๋‘ ์ƒ๋žตํ•œ๋‹ค๋ฉด ์ปดํŒŒ์ผ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

*๋ฐฐ์—ด ์˜ˆ์ œ 1: ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ธฐ
#include <stdio.h>

int main(void){

    int a[10] = {1,2,3,4,5};
    int i ;

    for (i=0;i<10;i++){
        printf("%d\n", a[i]);
    }
    system("pause");
}

 

*๋ฐฐ์—ด ์˜ˆ์ œ 2: ๋ฐฐ์—ด์˜ ์›์†Œ์ค‘, ์ตœ๋Œ“๊ฐ’ ์ฐพ์•„ ์ถœ๋ ฅํ•˜๊ธฐ
#include <stdio.h>
#include <limits.h> // ๊ฐ ์ž๋ฃŒํ˜•์˜ ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’์ด ์ •์˜๋˜์–ด์žˆ๋Š” ํ—ค๋”ํŒŒ์ผ

int main(void){
    int a[10] = { 6, 5, 4, 3, 9, 8 , 0, 1, 11, 3};
    int i, maxValue =INT_MIN;  // INT_MIN = -214748364811 int๋กœ ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€๊ฐ’
    printf("%d",maxValue);
    for (i=0; i<10; i++){
        if (maxValue<a[i]) maxValue=a[i];
    }
    printf("%d\n", maxValue);
}

 

๋ฐฐ์—ด ๊ฐ’์„ ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ

๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ• ๋•Œ { } ์ค‘๊ด„ํ˜ธ ์†์„ ๋น„์›Œ๋‘๋ฉด, ๊ฐ’์ด ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

#include <stdio.h>
int main(){
	int arr1[100] = { };
    for (int i = 0 ; i < 100 ; i++ ){
    printf("%d\n", arr1[i]);
    }
    return 0;
}


์ถœ๋ ฅ >>>>>> 0 ์ด ๋ฐฐ์—ด์˜ size๋งŒํผ ์ถœ๋ ฅ๋œ๋‹ค.( ์ฆ‰ 0 * 100๋ฒˆ ์ถœ๋ ฅ)

 

 

 

* ๋ฐฐ์—ด + ๋ฐ˜๋ณต๋ฌธ์‹œ index ์„ค์ • 

 

C์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฒ—์–ด๋‚˜๋„ ์—๋Ÿฌ๋ฐœ์ƒ์ด ์—†์œผ๋ฏ€๋กœ, for๋ฌธ์˜ ์กฐ๊ฑด์‹์— ๋ฐฐ์—ด์˜ size๋ฅผ ์ง์ ‘ ์ˆซ์ž๋กœ ์ž…๋ ฅํ•˜๊ธฐ๋ณด๋‹ค๋Š” 

for (int i = 0 ;  i < sizeof(Arr) / sizeof(int) ; i++) ์™€ ๊ฐ™์ด sizeof ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ

๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ฃผ์†Œ๊ฐ’๋งŒ ๋‹ด๊ณ ์žˆ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด์€ ์ฃผ์†Œ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ์ฃผ์†Œ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์ฃผ์†Œ๊ฐ’ ์—ฐ์‚ฐ์ž &๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. (์ฆ‰ ,์‹ค์ œ ๋™์ž‘์—์„œ๋Š” ๋ฐฐ์—ด = ํฌ์ธํ„ฐ ๋ผ๊ณ  ํ• ์ˆ˜์žˆ๋‹ค)

 

#include <stdio.h>
int main(){
	int arr[] = {99,2,3,4,5};
    int *pointer = arr;   // &๊ฐ€ ํ•„์š” ์—†๋‹ค.
    printf("%d\n", *pointer)  // ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ 99 ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
	printf("%d\n", *arr) // ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ์—ญ์ฐธ์กฐํ•ด๋„ ์ฒซ๋ฒˆ์งธ ์š”์†Œ์ธ 99๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
	printf("&d\n", pointer[3])  // ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ์ธ๋ฑ์Šค์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

    return 0;
}

 

๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ์˜ ์ฐจ์ด์  : sizeof๋กœ ํฌ๊ธฐ๋ฅผ ๋ณด์•˜์„๋•Œ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

๋ฐฐ์—ด : ๋ฐฐ์—ด์ด ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋งŒํผ ๋‚˜์˜จ๋‹ค. ( int ์ž๋ฃŒํ˜• 4๊ฐœ๋ผ๋ฉด 4byte * 4 = 16byte )

ํฌ์ธํ„ฐ : ํฌ์ธํ„ฐ์˜ ์ž๋ฃŒํ˜•์˜ size๊ฐ€ ๋‚˜์˜จ๋‹ค. ( intํ˜• ํฌ์ธํŠธ๋ผ๋ฉด 4byte )

 

* ์˜ˆ์ œ) ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ.
#include <stdio.h>
int main(){
    int decimal, index = 0;
    scanf("%d", &decimal);
    int binary[20] = {};
    while(decimal != 0){
        binary[index] = decimal % 2;
        decimal /= 2;
        index++;
    }

    for (int i = index-1 ; i >= 0; i--)
    {
        printf("%d", binary[i]);
    }
}
  • decimal : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ๋ฐ›์„ 10์ง„์ˆ˜.
  • index : ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
  • binary : 2์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด
  • 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ• ๋•Œ๋Š”, 2๋กœ ๊ณ„์† ๋‚˜๋ˆ„๊ณ , ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ฝ์œผ๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์ฝ”๋“œ์—์„œ๋Š” decimal์„ 2๋กœ ๊ณ„์† ๋‚˜๋ˆ„๊ณ , ๋‚˜๋จธ์ง€๋Š” binary๋ฐฐ์—ด์— ํ•˜๋‚˜์”ฉ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— for๋ฌธ์œผ๋กœ ์ €์žฅ๋œ binary๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

*๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด

C์–ธ์–ด๋Š” ๋ฌธ์ž์—ด์ด๋ผ๋Š” ์ž๋ฃŒํ˜•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ C์–ธ์–ด์—์„œ์˜ ๋ฌธ์ž์—ด์€ ๋ฌธ์ž(Char : Character)๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋ฌถ์–ด๋†“๋Š” ๋ฌธ์ž๋“ค์˜ ๋ฐฐ์—ดํ˜•ํƒœ๋กœ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ex) char a[20] = "Hello world"

 

*๋ฌธ์ž์—ด ์˜ˆ์ œ 1 : ๋ฌธ์ž์—ด์—์„œ ํŠน์ •๊ฐ’ ์ˆ˜์ •ํ•˜๊ธฐ

#include <stdio.h>

int main(void){

    char a[20] = "Hello world";

    a[5] = '!';

    printf("%s\n",a);

    return 0;

}

 

*๋ฌธ์ž์—ด ์˜ˆ์ œ 2: ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜ countํ•˜๊ธฐ

#include <stdio.h>

int main(void){
    char a[] = "Hello world";
    int count = 0;
    for (int i =0; i<=10; i++){
        if(a[i]=='l') count++;
        printf("์ถ”๊ฐ€");
    }
    printf("l์˜ ๊ฐœ์ˆ˜๋Š” : %d",count);
    return 0;
}

 

 

 

* 2์ฐจ์› ๋ฐฐ์—ด

 

2์ฐจ์› ๋ฐฐ์—ด์€ ์„ธ๋กœ(column) ๊ฐ€๋กœ(row)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ด„ํ˜ธ [  ] ๋ฅผ 2๋ฒˆ ์‚ฌ์šฉํ•ด์„œ ์„ ์–ธํ•œ๋‹ค.

ex ) int arr[3][3] = { { 1, 2, 3 } , { 4, 5, 6 } };

๋”ฐ๋ผ์„œ, ๊ฐ’์— ์ ‘๊ทผํ• ๋•Œ๋„ 2๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ ‘๊ทผํ•œ๋‹ค. ๋ฐฐ์—ด[์„ธ๋กœ์ธ๋ฑ์Šค][๊ฐ€๋กœ์ธ๋ฑ์Šค];

 

0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ฐฐ์—ด ์„ ์–ธํ•˜๊ธฐ
#include <stdio.h>
int main(){
	int arr[5][5] = { };   // 5x5 ๋ฐฐ์—ด ์„ ์–ธ. ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    
    printf("%d",arr[1][1]);
    printf("%d",arr[2][1]);
    printf("%d",arr[3][1]);
    printf("%d",arr[4][1]);
    
    return 0;
}

์ถœ๋ ฅ >>>>>> 0000 
(๋ชจ๋‘ 0์ด ์ถœ๋ ฅ๋œ๋‹ค.)

 

2์ฐจ์› ๋ฐฐ์—ด ์ถœ๋ ฅํ•˜๊ธฐ
#include <stdio.h>
int main(){
    int arr[10][2] =  { }  ;  // 10ํ–‰ 2์—ด๋ฐฐ์—ด ์„ ์–ธ, 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    int row, col ;    
    for (int i =0 ; i < 10; i++){
        for (int j = 0; j < 2 ; j ++){
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

์ถœ๋ ฅ๊ฒฐ๊ณผ

 

sizeof ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, 2์ฐจ์› ๋ฐฐ์—ด์˜ row, column ๊ตฌํ•˜๊ธฐ
#include <stdio.h>
int main(){
	int numArr[3][4] = {    // ์„ธ๋กœ ํฌ๊ธฐ 3, ๊ฐ€๋กœ ํฌ๊ธฐ 4์ธ intํ˜• 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
        { 1, 2, 3, 4 },
        { 515, 466, 37, 58 },
        { 9, 10, 11, 12 }
    };
    
    int col = sizeof(numArr[0]) / sizeof(int); // size(numArr[0]) : ๊ฐ€๋กœ ํ•œ์ค„์˜ ํฌ๊ธฐ
	int row = sizeof(numArr) / sizeof(numArr[0]);
    
    printf("row = %d, col = %d",row, col);
    
    return 0;
}

๊ฐ€๋กœ ํ•œ์ค„(sizeof(numArr[0])์„ int์˜ size๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฉด, ๊ฐ€๋กœ ํ•œ์ค„์— ๋ช‡๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ๋„์ถœ๋œ๋‹ค. ๊ทธ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์„ธ๋กœ์˜ ๊ฐœ์ˆ˜์ด๋ฏ€๋กœ col์ด ๋œ๋‹ค.

 

 

 

* 2์ฐจ์› ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ

 

2์ฐจ์› ๋ฐฐ์—ด์„ ํฌ์ธํ„ฐ์— ๋„ฃ์œผ๋ ค๋ฉด

  • ์ž๋ฃŒํ˜• (*ํฌ์ธํ„ฐ์ด๋ฆ„)[๊ฐ€๋กœํฌ๊ธฐ]; ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์•ผํ•œ๋‹ค.
  • ํฌ์ธํ„ฐ ์ด๋ฆ„์„ ๊ฐ์‹ผ ์†Œ๊ด„ํ˜ธ ( ) ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์†Œ๊ด„ํ˜ธ๋ฅผ ์ ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ํฌ์ธํ„ฐ๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์ด๋ผ๋Š” ๋œป์ด๋œ๋‹ค.
  • ์ž๋ฃŒํ˜•๊ณผ ๊ฐ€๋กœ์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.
  • ํฌ์ธํ„ฐ์— ํ• ๋‹นํ•œ ๋’ค, ์—ญ์ฐธ์กฐ ํ•˜๋ฉด 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฐฐ์—ด์˜ ์„ธ๋กœ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

 

* ํฌ์ธํ„ฐ๋ฅผ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ

 

  • 1. ์ž๋ฃŒํ˜• *ํฌ์ธํ„ฐ์ด๋ฆ„ = malloc(sizeof(์ž๋ฃŒํ˜•) * ํฌ๊ธฐ); ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์„ ์–ธํ•œ๋‹ค.
  • 2. ํฌ์ธํ„ฐ์— ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜, ์ถœ๋ ฅํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • 3. ๋งˆ์ง€๋ง‰์— free ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค.
#include <stdio.h>
#include <stdlib.h>
int main(){
	int *arrPtr = malloc(sizeof(int) * 10);
    arrPtr[2] = 10;
    printf("%d",arrPtr[2]);
    free(arrPtr);
    
    return 0;
}

 

* ํฌ์ธํ„ฐ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์‚ฌ์šฉํ•˜๊ธฐ.

ํฌ์ธํ„ฐ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์ค˜์•ผํ•œ๋‹ค.

  • ์ž๋ฃŒํ˜• **ํฌ์ธํ„ฐ์ด๋ฆ„ = malloc(sizeof(์ž๋ฃŒํ˜• *) * ์„ธ๋กœํฌ๊ธฐ); ๋กœ, row(๊ฐ€๋กœ๊ฐ€ ๋ช‡์ค„์ธ์ง€) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น.
    • ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ  ํฌ์ธํ„ฐ[i] = malloc(sizeof(์ž๋ฃŒํ˜•) * ๊ฐ€๋กœํฌ๊ธฐ);  ๋กœ, column(์„ธ๋กœ๊ฐ€ ๋ช‡์ค„์ธ์ง€) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น.
    • free(ํฌ์ธํ„ฐ[i]); ๋ฐ˜๋ณต๋ฌธ์„ ์„ธ๋กœํฌ๊ธฐ ๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•ด์ œ
    • free(ํฌ์ธํ„ฐ);์™€ ๊ฐ™์ด ์„ธ๋กœ ๊ณต๊ฐ„ ํ•ด์ œ
#include <stdio.h>
#include <stdlib.h>   
int main()
{
    int **pointer = malloc(sizeof(int *) * 3);   // ์ด์ค‘ ํฌ์ธํ„ฐ์— (int ํฌ์ธํ„ฐ ํฌ๊ธฐ * ์„ธ๋กœ ํฌ๊ธฐ)๋งŒํผ
    for (int i = 0; i < 3; i++)            // ์„ธ๋กœ ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณต
    {
        pointer[i] = malloc(sizeof(int) * 4);    // (int ํฌ๊ธฐ * ๊ฐ€๋กœ ํฌ๊ธฐ)๋งŒํผ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น.
                                           // ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ
    }

    pointer[2][0] = 5;    // ์„ธ๋กœ ์ธ๋ฑ์Šค 2, ๊ฐ€๋กœ ์ธ๋ฑ์Šค 0์ธ ์š”์†Œ์— ๊ฐ’ ํ• ๋‹น

    printf("%d\n", pointer[2][0]);    // 5: ์„ธ๋กœ ์ธ๋ฑ์Šค 2, ๊ฐ€๋กœ ์ธ๋ฑ์Šค 0์ธ ์š”์†Œ์˜ ๊ฐ’ ์ถœ๋ ฅ

    for (int i = 0; i < 3; i++)    // ์„ธ๋กœ ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณต
    {
        free(pointer[i]);                // 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ๊ณต๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
    }

    free(pointer);    // 2์ฐจ์› ๋ฐฐ์—ด์˜ ์„ธ๋กœ ๊ณต๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
    return 0;
}

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.