동적 할당 저장 공간의 활용
2023. 2. 9. 15:30ㆍC언어/기본 개념
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 |