>  기사  >  백엔드 개발  >  C에서 가변 크기의 배열을 선언할 수 있습니까?

C에서 가변 크기의 배열을 선언할 수 있습니까?

DDD
DDD원래의
2024-11-01 22:11:29388검색

Can You Declare an Array with a Variable Size in C  ?

C의 가변 배열 크기 선언

C에서 배열의 크기는 일반적으로 상수 정수 값으로 예상됩니다. 그러나 크기가 상수가 아닌 변수를 사용하여 배열을 선언하는 것이 가능한지에 대한 의문이 생깁니다.

The C 프로그래밍 언어에서 Bjarne Stroustrup이 강조한 것처럼 "배열 바인딩은 상수 표현식이어야 합니다." 결과적으로 아래 코드는 잘못된 것으로 간주됩니다.

<code class="cpp">int ArraySize = 5;
int MyArray[ArraySize]; // incorrect</code>

그러나 놀랍게도 GCC v4.4.0과 같은 일부 시스템에서는 코드가 성공적으로 컴파일됩니다.

<code class="cpp">void f(int i) {
    int v2[i];
}

int main() {
    int i = 3;
    int v1[i];
    f(5);
}</code>

이 예상치 못한 동작 이는 표준에 대한 GCC 확장 때문입니다. 기본적으로 GCC에서는 상수가 아닌 변수를 배열 크기로 사용할 수 있습니다. 그러나 이는 모든 컴파일러 또는 플랫폼에서 지원되는 기능이 아닐 수도 있습니다.

이식성이 요구사항인 경우 GCC와 함께 -pedantic 옵션을 사용하여 이 확장에 대한 경고를 활성화하거나 -std=c를 사용하는 것이 좋습니다. 98 오류가 발생합니다. 표준을 준수하면 코드가 더욱 안정적이고 크로스 플랫폼과 호환됩니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.