동적 할당 저장 공간의 활용

2023. 2. 9. 15:30C언어/기본 개념

728x90

동적할당으로 문자열 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
int main(void
{
    char temp[200];
    char* sp[3];
    int i;
 
    for (i = 0; i < 3; i++)
    {
        gets(temp);
        sp[i] = (char*)malloc(strlen(temp) + 1);
        strcpy(sp[i],temp);
    }
 
    for (i = 0; i < 3; i++)
    {
        printf("%s\n", sp[i]);
    }
    for (i = 0; i < 3; i++)
    {
        free(sp[i]);
    }
    return 0;
}
void print_str(char** spp)
{
    int i;
    for (i = 0; i < 3; i++)
    {
        printf("%s\n", spp[i]);
    }
}
 
cs

일반 배열을 선언한다.

그 후 포인터 배열로 sp를 선언한다.

 

9행 반복문

temp값을 입력 받고 포인터 배열 첫번째에(sp[0]) 값에 첫번째 temp값의 길이에 1을 더해 그 값의 메모리 공간을 확보한다. 그 후 strcpy를 통해서 sp[0] 위치에 첫 temp에 값을 복사해준다.

 

20행 반복문

동적 메모리에 넣은 값을 다 사용 후에는 반납해야한다.

 

26행 함수

20행 반복문을 자주 사용하게 될 경우 편하게 사용하기 위해 함수로 만든 것이다.

이때 필요한 매개변수는 각 문자들의 시작 주소값들이다. 그 값인 sp는 포인터 배열의 배열명이다. *sp라는 말

그 값의 주소를 구하기 위해서 **spp로 받아줘야한다.

**spp ++ 할 경우 500번지에서 504번지로 이동한다.


main함수 매개변수 받기

int main(매개변수 개수, 포인터의 주소값)

int main(int argc, char **argv)

728x90

'C언어 > 기본 개념' 카테고리의 다른 글

구조체 활용, 공동체, 열거형  (0) 2023.02.10
구조체  (0) 2023.02.09
동적 할당 함수  (0) 2023.02.08
함수 포인터와 void 포인터  (0) 2023.02.07
이중포인터, 배열 포인터  (0) 2022.12.26