유형 한정자는 C 프로그래밍 언어의 기존 데이터 유형에 특수 속성을 추가합니다.
C 언어에는 세 가지 유형 한정자가 있으며 휘발성 및 제한 유형 한정자는 아래에 설명되어 있습니다 -
휘발성
휘발성 유형 한정자는 변수가 공유됨을 컴파일러에 알리는 데 사용됩니다. 즉, 변수가 volatile로 선언되면 다른 프로그램(또는) 엔터티에서 변수를 참조하고 변경할 수 있습니다.
예를 들어, 휘발성 int x;
제한
이것은 포인터에만 사용됩니다. 포인터가 참조 데이터에 액세스하는 초기 방법일 뿐임을 나타냅니다. 최적화를 위해 컴파일러에 더 많은 도움을 제공합니다.
예시 프로그램
다음은 휘발성 유형 한정자를 위한 C 프로그램입니다 -
int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Cannot be replaced with *ptr+=9 ____ ____ ____ *ptr+=5;
여기서 컴파일러는 *ptr+=4 및 *ptr+=5 두 문을 *ptr+=9 한 문으로 바꿀 수 없습니다. 변수 'a'에 직접(또는) 다른 포인터를 통해 액세스할 수 있는지 여부가 명확하지 않기 때문입니다.
예:
restrict int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Can be replaced with *ptr+=9 ____ ____ *ptr+=5; ____ ____로 대체 가능
여기서 컴파일러는 두 명령문을 *ptr+=9 하나의 명령문으로 바꿀 수 있습니다. 다른 리소스를 통해 변수에 액세스할 수 없음이 확실하기 때문입니다.
예시
다음은 제한 키워드 사용을 위한 C 프로그램입니다 -
#include<stdio.h> void keyword(int* a, int* b, int* restrict c){ *a += *c; // Since c is restrict, compiler will // not reload value at address c in // its assembly code. *b += *c; } int main(void){ int p = 10, q = 20,r=30; keyword(&p, &q,&r); printf("%d %d %d", p, q,r); return 0; }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
40 50 30