logo

C 배열의 길이

C에서 배열의 길이는 배열의 요소 수를 나타냅니다. 선언 시 명시되어야 합니다. 모든 요소를 ​​저장하는 데 필요한 메모리를 결정하는 데 사용되는 배열의 크기라고도 합니다. C 프로그래밍 언어에는 배열의 길이를 찾기 위해 미리 정의된 함수가 없지만 아래에 언급된 다른 방법을 사용하여 수동으로 결정할 수 있습니다.

    sizeof() 연산자 사용 포인터 연산 사용 루프 사용

1. sizeof() 연산자 사용

sizeof 연산자는 변수와 데이터 유형의 크기를 계산하는 컴파일 타임 단항 연산자입니다. 표현식 또는 변수의 크기를 바이트 단위로 나타내는 정수 값을 반환합니다. sizeof 연산자는 주로 동적 메모리 할당에 사용되지만 배열의 길이를 찾는 데에도 사용할 수 있습니다.

비결은 먼저 sizeof 연산자를 사용하여 전체 배열의 크기(바이트)와 단일 요소의 크기를 찾은 다음 전체 배열의 크기를 단일 요소의 크기로 나누어 요소 수를 얻는 것입니다. 배열에서.



통사론:

data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>

위 구문에서,

    data_type: 배열의 길이를 저장하려는 변수의 유형입니다(예: int, size_t 등). Array_name: 크기를 구하려는 배열의 이름입니다. sizeof(배열_이름): 전체 배열의 크기를 바이트 단위로 반환하는 연산자입니다. sizeof(Array_name[index]): 배열에 있는 단일 요소의 크기를 바이트 단위로 반환합니다. index: 배열에 있는 모든 요소의 인덱스입니다.

예:


자바 생성 목록



// C Program to calculate size of an array using sizeof()> // operator> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5 };> > >// variable to store size of Arr> >int> length =>sizeof>(Arr) />sizeof>(Arr[0]);> >printf>(>'The length of the array is: %d '>, length);> >return> 0;> }>

>

>

산출

The length of the array is: 5>

시간 복잡도: O(1)은 일정한 시간 연산만 수행되었기 때문입니다.

공간 복잡도: O(1): 추가 공간이 사용되지 않았습니다.

2. 포인터 연산 사용

포인터 산술을 사용하여 C에서 배열의 길이를 계산할 수도 있습니다. 포인터를 사용하는 이 솔루션은 배열의 요소 수를 찾는 데 사용되는 해킹일 뿐입니다.

통사론:

 data_type length = *(&arr + 1) - arr;>

위 구문에서:

    &arr: 요소 배열에 대한 포인터입니다. (&arr + 1): 포인터 형식으로 배열 앞의 메모리 주소는 정수 배열에 대한 포인터입니다. *(&arr + 1) – arr: 배열의 시작과 끝 사이의 차이를 포함

예:

C# 사전




// C Program to calculate size of an array using pointer arithmetic> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5, 6 };> >// variable to store the size of Arr> >int> length = *(&Arr + 1) - Arr;> >printf>(>'Number of elements in Arr[] is: %d'>, length);> >return> 0;> }>

>

>

산출

Number of elements in Arr[] is: 6>

3. 루프 사용

루프 메소드는 C에서 배열의 길이를 계산하는 데 사용됩니다. 이는 배열의 모든 요소를 ​​반복하고 개수를 증가시킵니다.

예:




// C Program to calculate size of an array using loop> #include> > int> arr_length(>int> arr[])> {> >int> i;> >int> count = 0;> >for>(i=0; arr[i]!=>' '>; i++)> >{> >count++;> >}> >return> count;> }> > int> main()> {> >int> arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};> >int> n;> > >n = arr_length(arr);> >printf>(>'Length of Array is: %d'>, n);> > >return> 0;> }> // This code is contributed by Susobhan Akhuli>

Azure 구독

>

>

산출

Length of Array is: 10>

시간 복잡도: O(n) 여기서 n은 배열의 요소 수입니다.

공간 복잡도: O(1): 추가 공간이 사용되지 않았습니다.

메모: 이러한 메서드는 배열이 동일한 범위에서 선언된 경우에만 작동합니다. 이 메서드는 포인터로 전달되는 배열에서 시도하면 실패합니다. 이는 Array Decay로 인해 발생합니다.

문자열(문자 배열)의 길이를 찾는 반복 방법은 다른 유형의 배열에도 적용할 수 없습니다. 이러한 배열 유형에는 끝 표시기가 없기 때문입니다. ' ' NULL 문자열의 끝을 표시하는 문자.