0
A
답변
3
C 언어 const
의 개체는 상수으로 한정되지 않습니다. 상수 표현식을 작성하는 데 사용할 수 없습니다. 코드 예제에서 n
은 C 언어의 용어에서 상수가 아닙니다. 표현 n
는
이 즉시 array
당신의 선언은 가변 길이 배열을 선언하려는 시도는 것을 의미
C.
(자세한 내용에 대한 "static const" vs "#define" vs "enum" 및 Why doesn't this C program compile? What is wrong with this?를 참조하십시오.)에서 중요한 상수 표현하지 않습니다. 가변 길이 배열은 자동 (로컬) 객체로만 허용됩니다. 정적 저장 기간을 사용하여 배열을 선언하면 크기는 정수 상수 표현식, 즉 컴파일 타임 상수 여야합니다.n
은 그 자격이 없습니다. 선언은 합법적이지 않습니다.
이 때문에 C 언어에서 명명 된 상수를 소개하기 위해 #define
및/또는 enum
을 주로 사용하지만 const
개체를 사용하지 않습니다.
0
정적 변수는 COMPILE 시간에 할당되어야하며, 따라서 컴파일 타임에 반드시 알려야하는 경우 해당 크기와 초기화 값이 할당되어야합니다. 컴파일 시간 최적화를 사용하면 n var가 상수 값 10으로 바뀔 수 있으므로 특정 경우를 성공적으로 컴파일 할 수 있다고 주장 할 수 있습니다.
storage size of ‘array’ isn’t constant static int array[n]; ^
정적 할당은 동적 메모리 할당 또는 자동 메모리 할당과 달리, 관련 프로그램을 실행하기 전에 컴파일 시간에 메모리를 확보하는 과정을 의미 :
2
const int n=10;
static int array[n];
이 코드는 오류가 발생할 것이다 여기서 메모리는 런타임에 필요에 따라 할당됩니다.
const
(C 언어) 컴파일시 해당 변수를 사용할 수 없습니다.
static int array[10];
그래서, 당신이 쓴 문장이 불법 또는 프로그램을 컴파일하는 동안 오류 발생 :이 같은
문은 오류가 발생하지 않을 것입니다.
관련 문제
- 1. OpenCL : 가변 길이의 배열 출력
- 2. 가변 길이의 생성시 2D 배열 만들기
- 3. 정적 배열, 가변 크기가 허용됩니까?
- 4. Malloc, 가변 길이 배열 또는 정적 배열?
- 5. 가변 길이의 하위 문자열
- 6. 가변 길이의 물리적 주소
- 7. 가변 길이의 인수
- 8. 가변 길이의 문자
- 9. 가변 길이의 연결된 목록 만들기
- 10. 가변 길이의 파이썬 함수 입력
- 11. 가변 길이의 TSQL 하위 문자열
- 12. stdin (가변 길이의 파일)에서 읽기
- 13. 불특정 길이의 배열 문제
- 14. 같은 길이의 배열
- 15. 동일한 길이의 배열 만들기
- 16. 다른 길이의 플롯 배열
- 17. C에서 가변 길이의 UDP 패킷을 읽는 법
- 18. 가변 길이의 음수 모양이 뒤에서 일치합니다.
- 19. 가변 길이의 하위 문자열 참조 번호 캡처
- 20. DOS에서 가변 길이의 파일 이름 바꾸기
- 21. PHP는 가변 길이의 부분 문자열을 대체합니다.
- 22. Python에서 가변 길이의 중첩 목록 정렬
- 23. 가변 길이의 특징 벡터를 다루는 방법은 무엇입니까?
- 24. neo4j 및 groovy : 가변 길이의 경로 자동로드
- 25. SQL - 가변 길이의 두 문자열 간의 유사도
- 26. 가변 길이의 배열을 스칼라에서 튜플로 변환
- 27. Python : 가변 길이의 인수 목록이있는 함수
- 28. JGAP에서 가변 길이의 염색체를 사용할 수 있습니까?
- 29. 문자열에서 가변 길이의 부분 문자열 제거
- 30. 가변 길이의 배열을 사용하여 구조체를 정적으로 초기화
배열의 길이가 가변적 인 것은 아닙니다. 'n'은 컴파일 타임에 값이 알려진 상수 표현식입니다. –
static 또는 extern 저장 클래스 지정자로 선언 된 배열 객체는 가변 길이 배열 (VLA) 유형을 가질 수 없습니다. 정적 배열의 크기를 왜 가변적으로 만들 수 없습니까? [복제] –
@ R Sahu : 그건 틀렸어. C 언어에서'const' 객체는 컴파일 타임 상수로 적합하지 않습니다. 이것은 C와 C++ 언어의 중요한 차이점입니다. – AnT