logo

C의 sizeof 연산자

크기 C에서 많이 사용되는 연산자입니다. 이는 다음을 계산하는 데 사용할 수 있는 컴파일 타임 단항 연산자입니다. 피연산자의 크기 . sizeof의 결과는 일반적으로 size_t로 표시되는 부호 없는 정수 계열 형식입니다. sizeof는 정수 및 부동 소수점 유형과 같은 기본 유형, 포인터 유형 또는 구조, 공용체 등과 같은 복합 데이터 유형을 포함한 모든 데이터 유형에 적용될 수 있습니다.

통사론:

 sizeof ( Expression );>

어디 ' 표현 '는 데이터 유형이거나 모든 유형의 변수일 수 있습니다.



반품: 주어진 표현식의 크기를 반환합니다.

시간 복잡도: 오(1)
보조 공간: 오(1)

sizeof() 연산자의 사용법

크기() 연산자는 피연산자 유형에 따라 다른 방식으로 사용됩니다.

1. 피연산자가 데이터 유형인 경우: 언제 크기() int, float, char… 등과 같은 데이터 유형과 함께 사용되며 단순히 해당 데이터 유형에 할당된 메모리 양을 반환합니다.

배우 란비르 카푸어 나이

예:




// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu '>,>sizeof>(>char>));> >printf>(>'%lu '>,>sizeof>(>int>));> >printf>(>'%lu '>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }>

>

>

산출

1 4 4 8>

메모: sizeof()는 기계에 따라 다른 출력을 제공할 수 있습니다. 우리는 32비트 gcc 컴파일러에서 프로그램을 실행했습니다.

2. 피연산자가 표현식인 경우: 언제 크기() 표현식과 함께 사용되면 표현식의 크기를 반환합니다.

예:




// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }>

>

>

산출

8>

int와 double의 첫 번째 경우 크기가 각각 4와 8이라는 것을 알 수 있듯이 a는 int 변수이고 d는 double 변수입니다. 최종 결과는 두 배가 됩니다. 따라서 우리 프로그램의 출력은 8바이트입니다.

연산자 유형

sizeof()는 컴파일 타임 연산자입니다. 컴파일 타임은 소스코드가 바이너리 코드로 변환되는 시간을 의미합니다. () 안의 코드를 실행(실행)하지 않습니다.

예:




자바 배열 반환

// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }>

>

>

지원하다
산출

4 11>

x 값을 증가시키려고 하면 그대로 유지됩니다. 이는 x가 괄호 안에서 증가하고 sizeof()가 컴파일 타임 연산자이기 때문입니다.

Sizeof의 필요성

1. 배열의 요소 수를 찾으려면 다음을 수행하십시오. Sizeof를 사용하면 배열의 요소 수를 자동으로 계산할 수 있습니다.

예:




// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }>

>

>

산출

Number of elements:11>

2. 메모리 블록을 동적으로 할당하려면: sizeof는 동적 메모리 할당에 많이 사용됩니다. 예를 들어, 10개의 정수를 보유하기에 충분한 메모리를 할당하려고 하는데 특정 시스템의 sizeof(int)를 알지 못하는 경우입니다. sizeof의 도움으로 할당할 수 있습니다.

통사론:

int* ptr = (int*)malloc(10 * sizeof(int));>

자세한 내용은 기사를 참조하십시오 – 메모리 블록을 동적으로 할당 .