> 백엔드 개발 > C++ > 표준 C에서 가변 크기의 배열을 어떻게 선언할 수 있나요?

표준 C에서 가변 크기의 배열을 어떻게 선언할 수 있나요?

Susan Sarandon
풀어 주다: 2024-11-15 22:57:03
원래의
619명이 탐색했습니다.

How Can I Declare an Array With a Variable Size in Standard C?

가변 배열 크기를 사용하는 C의 동적 배열 할당

동적 배열이라고도 하는 가변 크기 배열은 표준 C에서 문제를 제기합니다. . 다음 프로그램을 고려해보세요:

<br>int siz = 0;<br>int n = 0;<br>FILE* picture;</p>
<p>picture = fopen("test.jpg", "r");<br>fseek(picture, 0, SEEK_END );<br>siz = ftell(사진);</p>
<p>char Sbuf[siz];<br>fseek(그림, 0, SEEK_SET); //파일의 처음으로 이동<br>while (!feof(picture)) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture);
/* ... do stuff with the buffer ... */
/* memset(Sbuf, 0, sizeof(Sbuf)); */
로그인 후 복사

}

위의 코드는 변수 siz에 의해 결정된 크기로 문자 배열을 할당합니다. 그러나 표준 C에서는 배열 크기가 상수여야 합니다. 이는 다음과 같은 질문을 제기합니다. 코드 컴파일을 허용하기 위해 어떻게 siz를 올바르게 선언할 수 있습니까?

안타깝게도 표준 C에는 가변 크기의 배열을 선언하는 직접적인 방법이 없습니다. 그러나 몇 가지 대안이 있습니다.

  • std::Vector: 최신 C에서는 std::Vector 컨테이너를 다음의 유연한 대안으로 사용할 수 있습니다. 배열. 원하는 크기로 쉽게 확장할 수 있으며 사용법은 비교적 간단합니다.
  • 새 연산자: new 연산자를 사용하여 힙에 메모리를 동적으로 할당할 수 있습니다. 가변 크기의 배열을 생성하려면 char* Sbuf = new char[siz]; 힙에 siz 문자 배열을 할당합니다. 그러나 이 접근 방식은 메모리 관리 문제(예: 잠재적인 메모리 누수)를 초래하므로 std::Vector보다 적합하지 않습니다.

위 내용은 표준 C에서 가변 크기의 배열을 어떻게 선언할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿