본문 바로가기

포인터

volatile과 restrict변수 volatile 컴파일러에게 변수의 값이 프로그램이 아닌 다른 매개체(하드웨적인면)에 의해서 변경될 수 있음을 알린다. 이 한정자가 사용되는 곳은 일반적으로 하드웨어 주소라든지 동시에 실행되고 있는 다른 프로그램 과의 공유되는 데이터입니다. va11 = x; va12 = x; 라고 했을떄 x값은 바뀌지 않은체 2번 사용된다. 컴파일러는 원래의 x의 레지스터에 가서 x라는 값을 읽어 오는데 만약 이때 x라는 값이 외부 요인(하드웨어)에 의해 변경 되었다면 va12에는 변경된 값이 들어가야 할텐데 컴퓨터는 volatile가 쓰여 있지 않은 변수에 대해서는 바뀌지 않는다고 가정하고 그대로 적용하고 코드의 최적화를 실행하기 때문에 반드시 volatile를 써줘서 x값을 나타내야 한다. restrict 이 키워드.. 더보기
포인터(c언어) 포인터 int b=3; printf("%d", b);과 같은 구문 있다고 하면 b는 컴파일시 어떤 주소값을 나타내는지 컴퓨터가 처리해서 알고 있는 상태임 b에 해당되는 메모리의 주소를 찾아간다 그 메모리 주소 안에 저장되어 있는 내용을 확인하고 가져와서 printf함수에서 사용하게 되는 것 int b=3; int *a = &b; printf("%d", *a); 맨 아래의 *a의 의미 1. a는 컴파일시 어떤 주소값을 나타내는지 컴퓨터가 처리해서 알고 있는 상태 a에 해당되는 메모리 주소를 찾아감 2. 그 메모리 주소안에 저장되어 있는 내용을 확인하고 가져옴 3. 가져온 값은 주소값을 나타내고 있으므로 그 주소값을 찾아감 4. 그 메모리 주소안에 저장되어 있는 내용을 확인하고 가져옴 int tAry[][2.. 더보기