C 언어
C언어에서 strlen()은 널 종료 문자 '\0'을 제외한 널 종료 문자열의 문자 수를 반환합니다. 알파벳, 숫자, 기호, 공백 모두 셉니다.
이 글에서는 strlen(), sizeof()의 역할과 이들이 다르게 동작하는 이유를 설명합니다.
strlen()의 정의sizeof()의 정의sizeof 연산자는 피연산자의 크기를 바이트 단위로 산출합니다. 정적 타입의 경우 컴파일 타임에, 가변 길이 배열의 경우 런타임에 평가됩니다. 프리미티브, 포인터, 구조체, 공용체 등 모든 C 데이터 타입에 적용 가능합니다. 결과 타입은 size_t로, 가장 큰 객체의 크기를 담을 수 있는 부호 없는 정수 타입입니다.
int나 double 같은 타입의 크기가 32비트와 64비트 시스템 간에 다를 수 있으므로, sizeof는 이식성을 보장합니다.
strlen()은 문자열의 문자 수를 측정, sizeof()는 변수나 타입이 차지하는 메모리 크기를 측정.strlen()만 문자열의 종료 문자 '\0'을 고려, sizeof()는 내용을 무시.strlen()의 반환 타입은 size_t (현대 시스템에서 보통 64비트 부호 없는 정수), sizeof()도 size_t 반환.strlen()은 string.h에 정의된 런타임 함수, sizeof는 컴파일 타임 단항 연산자.strlen()은 문자 배열에만 동작, sizeof는 모든 타입에 동작.size_t length = strlen(my_string);
여기서 my_string은 문자 배열이거나 널 종료 문자열을 가리키는 포인터입니다.
#include <stdio.h>
#include <string.h>
int main() {
char strng[] = "January";
printf("주어진 문자열의 길이: %zu\n", strlen(strng));
return 0;
}
출력:
주어진 문자열의 길이: 7
sizeof(type)은 지정된 타입의 크기를 산출합니다.
#include <stdio.h>
#define my_sizeof(type) ((char*)(&type+1) - (char*)&type)
int main() {
double x;
printf("%zu", my_sizeof(x));
return 0;
}
출력:
8
변수 이름을 전달해 메모리 풋프린트를 얻습니다.
#include <stdio.h>
int main() {
printf("sizeof(char) = %zu\n", sizeof(char));
return 0;
}
출력:
sizeof(char) = 1
표현식의 타입 크기를 값 계산 없이 평가합니다.
#include <stdio.h>
int main() {
char p = 'S';
double q = 4.65;
printf("변수 p의 크기: %zu\n", sizeof(p));
printf("표현식의 크기: %zu\n", sizeof(p+q));
int a = (int)(p+q);
printf("명시적 변환된 표현식의 크기: %zu\n", sizeof(a));
return 0;
}
출력:
변수 p의 크기: 1 표현식의 크기: 8 명시적 변환된 표현식의 크기: 4

아래는 두 구문의 측면 비교 요약입니다.
| 특징 | strlen() | sizeof() |
|---|---|---|
| 헤더 파일 | string.h | 헤더 불필요 (내장 연산자) |
| 목적 | 문자열 길이 계산 (널 제외) | 타입 또는 변수의 메모리 크기 결정 |
| 반환 타입 | size_t | size_t |
| 평가 시점 | 런타임 (문자열 순회 가능) | 컴파일 타임 (VLA 제외) |
| 적용 대상 | 문자 배열 또는 널 종료 문자열 포인터만 | 모든 데이터 타입과 표현식 |
strlen() 사용.memcpy로 메모리 복사, 구조체 배열용 메모리 블록 할당 등) sizeof() 사용.sizeof(char)는 항상 1바이트로, C에서 메모리의 기본 단위임을 기억하세요.sizeof("hello")는 6(5문자 + 널 종료), strlen("hello")는 5를 산출.이 가이드라인을 준수하면 효율적이고 이식 가능하며 유지보수하기 좋은 C 코드를 작성할 수 있습니다.
C 언어
제작(Fabrication)과 가공(Machining)의 근본 차이 핵심은 재료 추가/제거 방향성입니다. 제작(Fabrication): 금속·플라스틱·섬유 등 원재료에 재료를 더하거나 제거해 대상물 형성. 가공(Machining): 공작기계로 재료를 깎아내며(제거하며) 형상·치수 구현. 제작(Fabrication)이란? 주조(casting), 접합(joining), 성형(forming) 등 공정 포함. 주조: 금형에 타 재료 채워 복제. 사형주조·열성형·사출성형·원심주조 등 다양. 소재·목표 형상·품질 따라 선정. 완제품 향한
주조와 단조의 개념 주조의 개념 주조는 액체 금속을 일정 형상의 주조 캐비티에 붓고, 냉각·응고 후 최종 부품을 얻는 공정입니다. 단조의 개념 단조는 단조 프레스로 금속 블랭크에 압력을 가해 금속을 소성 변형시키고, 최종적으로 일정 크기·형상·기계적 물성을 가진 단조품을 얻는 공정입니다. 단조는 단조와 스탬핑 두 대분류 중 하나입니다. 주조와 단조의 분류 주조 분류 주조는 크게 사형 주조와 특수 주조 두 가지로 나뉩니다. 사형 주조는 모래를 주조 재료로 쓰며, 습식사, 건식사, 화학경화사 등이 있으나 모든 모래가 주조용