728x90
▶volatile : 컴파일러는 변수를 최적화에서 제외함
volatile 변수 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
▶예제
#include <stdio.h>
int main()
{
const int num = 10;//상수
int* p;
p = (int*)#//int형 변환
*p = 20;
printf("%d", num);
return 0;
}
결과 : 10
#include <stdio.h>
int main()
{
volatile const int num = 10;//최적화에서 제외
int* p;
p = (int*)#
*p = 20;
printf("%d", num);//메모리에 접근 가능
return 0;
}
결과 : 20
▶해석
const로 상수 고정을 하였는데 강제로 변환하여 num 값을 바꾸어 출력하게 하였다. 근데 컴파일러는 num 값이 고정값임을 알기에 처음 고정한 수인 10을 가져와 바로 결과를 내보냈다.
volatile를 사용하여 컴파일러에서 자동으로 10이라고 인식하지 못하게 하고 포인터 p에 변환하여 주소 값을 저장한 후 20을 대입하여 결과를 내보냄
728x90
'C > 개념, 이해' 카테고리의 다른 글
함수 포인터 C언어 (0) | 2021.11.21 |
---|---|
char , wchar_t C언어 (0) | 2021.11.19 |
const 포인터 C언어 (0) | 2021.11.18 |
비트연산자와 사용예시 C언어 (0) | 2021.11.18 |
댓글