본문 바로가기
C 언어

c 언어[025] 문자열과 배열(2) strlen 문자열크기, 배열크기

by Smart Factory in 2020 2021. 10. 4.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
c 언어[025] 문자열과 배열(2) strlen 문자열크기, 배열크기 에 대해 알아보겠습니다. 

1. 문자열과 배열

가. 배열 크기 지정하지 않은 경우 

 

char str[]="hello";
int arr[]={10,20,30};

문자열과 된 str 배열과 숫자를 원소 갖는 arr배열입니다. 

str의 크기는 5가 나오고 arr은 3이 나와야합니다.

문자열 배열의 크기를 알아보기 위해서 sizeof 와 strlen 있습니다. 

len = strlen(str);
배열의 크기가 지정되지 않은 상황에서 strlen은 바로 그 배열의 크기를 알려줍니다. 
hello는 5가 나옵니다. 

len2 = sizeof(str)/sizeof(char);
같은 사이즈만 str 길이가 6이 나온 것을 볼 수 있습니다 char 형의 경우 마지막에 \0 으로 null문자가 들어가게 되어서 나오는 현상입니다. 

len2 = sizeof(str)/sizeof(char)-1;
sizeof 의 경우 마지막에 -1을 해줘야 글자만의 배열수가 나오게 됩니다.

len3 = sizeof(str);
sizeof(char)=1 이므로  sizeof(str)이 그대로 나오게 됩니다. 물론 마지막에 -1을 해야 정확한 값이 나오게 됩니다.

 

int arr[]={10,20,30};

숫자로 된 경우 배열 크기는 3이 나와야 합니다.

printf("arr[]길이 : %d\n", sizeof(arr));

sizeof(int) =4 로 나누어 주면 12/4에 의해서 3이 나오게 됩니다. 

#include<stdio.h>
#include<string.h>

int main() {
char str[]="hello";
int arr[]={10,20,30};
int len, len2,len3;
len = strlen(str);
len2 = sizeof(str)/sizeof(char);
len3 = sizeof(str);
printf("str길이 : %d\n", len);
printf("str길이 : %d\n", len2);
printf("str길이 : %d\n", len3);
printf("arr[]길이 : %d\n", sizeof(arr));
}

printf("arr[]길이 : %d\n", sizeof(arr));
printf("arr[]길이 : %d\n", sizeof(arr)/sizeof(int));

뒷부분에 출력값이 제대로 나온 것을 알 수 있습니다. 

 

나. 배열 크기 지정되어 있는 경우 

char str[50]="hello";

문자열의 경우 배열 값이 지정되면  해당 배열 만큼의 공간을 확보합니다.

그래서 할당된 크기가 나오게 됩니다. 

하지만 문자열의 경우  strlen은 실제 크기만큼만 나옵니다.

int arr[10]={10,20,30};

숫자 배열도 배열 크기가 정의 되면 지정된 크기만큼 나오게 됩니다. 

#include<stdio.h>
#include<string.h>

int main() {
char str[50]="hello";
int arr[10]={10,20,30};
int len, len2;
len = strlen(str);
len2 = sizeof(str)/sizeof(char)-1;
printf("str길이 : %d\n", len);
printf("str길이 : %d\n", len2);
printf("arr[]길이 : %d\n", sizeof(arr)/sizeof(int));
}
728x90
반응형

댓글