static const와 const의 차이점은 무엇입니까?
와의 차이는 무엇입니까?static const
그리고.const
예:
static const int a=5;
const int i=5;
그들 사이에 어떤 차이가 있나요?당신은 언제 하나를 다른 것 보다 먼저 사용하시겠습니까?
static
함수 외부의 가시성 또는 변수 내부의 수명을 결정합니다.그러니까 이건 아무 상관도 없어요.const
그 자체
const
초기화된 후에는 값을 변경하지 않음을 의미합니다.
static
함수 내란 함수 실행 전후에 변수가 존재함을 의미합니다.
static
기능 외부는 표시된 기호의 범위가static
는 그 .c 파일로 한정되어 있어 파일 밖에서는 볼 수 없습니다.
엄밀히 말하면 (이것을 검색하려면)static
스토리지 지정자 및const
는 유형 한정자입니다.
차이점은 링크입니다.
// At file scope
static const int a=5; // internal linkage
const int i=5; // external linkage
이 경우,i
오브젝트는 정의되어 있는 변환 유닛 외부에서는 사용되지 않습니다.오브젝트는 에서 선언해야 합니다.static
지정자.
이것에 의해, 컴파일러는 한층 더 최적화를 실행할 수 있게 되어, 오브젝트가 변환 유닛 이외에서는 사용되지 않는 것을 독자에게 통지합니다.
이러한 정의가 함수의 내부에 있는지 여부에 따라 달라집니다.함수 이외의 경우에 대한 답은 위의 ouah에 나와 있습니다.함수 내에서는 다음 예에서 볼 수 있듯이 효과가 다릅니다.
#include <stdlib.h>
void my_function() {
const int foo = rand(); // Perfectly OK!
static const int bar = rand(); // Compile time error.
}
로컬 변수를 "진짜 상수"로 하려면 "정수"뿐만 아니라 "정적 상수"를 정의해야 합니다.
const int i=5;
i
포인터를 사용하여 변경할 수 있는 값i
로컬로 정의 및 선언됩니다.static const int a=5;
또는const int i=5;
global :데이터 세그먼트의 RO 메모리에 저장되어 있기 때문에 변경할 수 없습니다.
#include <stdio.h>
//const int a=10; /* can not modify */
int main(void) {
// your code goes here
//static const int const a=10; /* can not modify */
const int a=10;
int *const ptr=&a;
*ptr=18;
printf("The val a is %d",a);
return 0;
}
언급URL : https://stackoverflow.com/questions/13185751/what-is-the-difference-between-static-const-and-const
'IT' 카테고리의 다른 글
fetch를 사용한 기본 인증? (0) | 2022.10.28 |
---|---|
IntelliJ의 코드 커버리지 정보 클리어 (0) | 2022.10.28 |
하나의 .js 파일에서 컴포넌트를 여러 파일로 분할합니다. (0) | 2022.10.28 |
공간 인덱스를 사용하지 않음 (0) | 2022.10.28 |
C 헤더 파일을 작성하려면 어떻게 해야 합니까? (0) | 2022.10.28 |