>  기사  >  백엔드 개발  >  예를 들어 C 언어의 휘발성 및 제한 유형 한정자를 설명합니다.

예를 들어 C 언어의 휘발성 및 제한 유형 한정자를 설명합니다.

王林
王林앞으로
2023-09-10 22:25:01789검색

유형 한정자는 C 프로그래밍 언어의 기존 데이터 유형에 특수 속성을 추가합니다.

예를 들어 C 언어의 휘발성 및 제한 유형 한정자를 설명합니다.

C 언어에는 세 가지 유형 한정자가 있는데, 그 중 휘발성 유형 한정자와 제한 유형 한정자를 설명하면 다음과 같습니다. -

Volatile

휘발성 유형 한정자는 변수가 공유된다는 것을 컴파일러에 알리는 데 사용됩니다. 즉, 변수가 휘발성으로 선언되면 다른 프로그램(또는) 엔터티에서 참조하고 변경할 수 있습니다.

예: 휘발성 int x

Limitations

이것은 포인터에서만 작동합니다. 이는 포인터가 참조된 데이터에 액세스하는 초기 방법일 뿐임을 보여줍니다. 컴파일러 최적화에 대한 추가 도움말을 제공합니다.

예제 프로그램

다음은 휘발성 유형 한정자 -

   int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Cannot be replaced with *ptr+=9
   ____
   ____
   ____
      *ptr+=5;

를 사용하는 C 프로그램입니다. 여기서 컴파일러는 *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 프로그램입니다. -

Live Demonstration

#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;
}

Output

위 프로그램을 실행하면 다음과 같은 결과가 나옵니다. -

40 50 30

위 내용은 예를 들어 C 언어의 휘발성 및 제한 유형 한정자를 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제