C 언어에서 문자열의 길이를 구할 때 strlen()과 sizeof()를 혼동하는 경우가 많습니다. 두 기능은 비슷해 보이지만 동작 방식과 반환 결과가 완전히 다릅니다. 이번 글에서는 각각의 개념과 사용법을 예제와 함께 살펴보고, 두 기능의 핵심 차이점까지 정리해 드립니다.
strlen() 함수란?
strlen()은 C 언어의 표준 라이브러리 함수로, string.h 헤더 파일에 선언되어 있습니다. 이 함수는 문자열이나 문자 배열의 실제 길이, 즉 널 종료 문자('\0')를 만나기 전까지의 문자 개수를 구하는 데 사용됩니다.
C 언어에서 strlen()의 문법은 다음과 같습니다.
size_t strlen(const char *string);
여기서,
string − 길이를 계산할 대상 문자열입니다.
다음은 C 언어에서 strlen()을 사용한 예제입니다.
예제
#include <stdio.h>
#include <string.h>
int main () {
char s1[10] = "Hello";
int len ;
len = strlen(s1);
printf("Length of string s1 : %d\n", len );
return 0;
}출력
Length of string s1 : 5
위 예제에서는 char형 배열 s1을 문자열 "Hello"로 초기화하고, 변수 len이 s1의 길이를 저장합니다. strlen()은 널 문자를 제외한 실제 문자 개수만 세기 때문에 "Hello"의 길이인 5가 출력됩니다.
char s1[10] = "Hello"; int len ; len = strlen(s1);
sizeof() 연산자란?
sizeof()는 C 언어의 단항 연산자(unary operator)로, 데이터 타입이나 변수가 메모리에서 차지하는 크기를 바이트 단위로 구하는 데 사용됩니다. 함수가 아닌 컴파일 타임 연산자라는 점이 특징입니다.
C 언어에서 sizeof()의 문법은 다음과 같습니다.
sizeof( type );
여기서,
type − 크기를 계산하고자 하는 임의의 타입, 자료형 또는 변수입니다.
다음은 C 언어에서 sizeof()를 사용한 예제입니다.
예제
#include <stdio.h>
int main() {
int a = 16;
printf("Size of variable a : %d\n",sizeof(a));
printf("Size of int data type : %d\n",sizeof(int));
printf("Size of char data type : %d\n",sizeof(char));
printf("Size of float data type : %d\n",sizeof(float));
printf("Size of double data type : %d\n",sizeof(double));
return 0;
}출력
Size of variable a : 4 Size of int data type : 4 Size of char data type : 1 Size of float data type : 4 Size of double data type : 8
strlen()과 sizeof()의 핵심 차이점
두 기능의 차이를 명확히 이해하기 위해 주요 차이점을 정리하면 다음과 같습니다.
- 종류: strlen()은 함수이고, sizeof()는 연산자입니다.
- 헤더 파일: strlen()은 string.h 헤더가 필요하지만, sizeof()는 별도의 헤더 없이 사용할 수 있습니다.
- 반환 값: strlen()은 널 문자를 제외한 문자열의 길이를 반환하고, sizeof()는 널 문자를 포함한 전체 메모리 크기를 바이트 단위로 반환합니다.
- 계산 시점: strlen()은 프로그램 실행 시간에 계산되며, sizeof()는 컴파일 시간에 계산됩니다.
- 적용 대상: strlen()은 문자열에만 사용할 수 있지만, sizeof()는 모든 자료형과 변수에 사용할 수 있습니다.
예를 들어 char s1[10] = "Hello";처럼 선언된 배열의 경우, strlen(s1)은 실제 문자 수인 5를 반환하는 반면, sizeof(s1)은 배열 전체 크기인 10을 반환합니다. 이처럼 목적에 맞게 두 기능을 구분하여 사용하는 것이 중요합니다.