본문 바로가기
C/개념, 이해

[C/개념, 이해]volatile 변수 C언어

by starfish22 2021. 11. 18.
728x90

▶volatile : 컴파일러는 변수를 최적화에서 제외함

volatile 변수 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

volatile 변수 - 위키백과, 우리 모두의 백과사전

C/C++ 프로그래밍 언어에서 이 키워드는 최적화 등 컴파일러의 재량을 제한하는 역할을 한다. 개발자가 설정한 개념을 구현하기 위해 코딩된 프로그램을 온전히 컴파일되도록 한다. 주로 최적화

ko.wikipedia.org

 

▶예제

#include <stdio.h>

int main()
{
	const int num = 10;//상수
	int* p;
	p = (int*)&num;//int형 변환
	*p = 20;
	printf("%d", num);

	return 0;
}

결과 : 10

 

#include <stdio.h>

int main()
{
	volatile const int num = 10;//최적화에서 제외
	int* p;
	p = (int*)&num;
	*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

댓글