variable 2

C언어 레지스터 변수 - 공부하는 도비

C언어를 사용하며 선언한 대부분의 변수는 메모리의 일정 공간을 할당받아 변수를 선언하고, 연산을 위해 CPU 내부 레지스터(register)로 복사되어 연산을 수행합니다. 또한, 저장이 필요한 경우 다시 레지스터 값을 메모리에 저장을 합니다. 따라서, 메모리를 읽어 레지스터로 복사하는 과정과 다시 레지스터에서 변경된 값을 메모리에 쓰는 과정이 필요합니다. 이러한 과정을 거치지 않기 위해서 C언어는 레지스터 변수라는 것을 사용합니다. 레지스터 변수 메모리가 아닌 레지스터 공간에 할당하여 사용하는 변수 레지스터 변수의 가장 큰 장점은 메모리 접근이 이뤄지지 않기 때문에, CPU 내부에서 빠른 연산을 통한 프로그램 전체 성능에 도움을 줍니다. 아래 그림처럼, 일반적인 변수는 선언한 변수가 메모리의 일부분에 저..

C Programming 2022.11.06

C언어 전역 변수, 지역 변수, 외부 변수 - 공부하는 도비

프로그래밍 수업을 할 때 학생들이 지역/전역 변수를 헷갈려해 아래와 같은 코드를 두고, 왜 오류가 나는지 묻는 경우가 있습니다.. 그래서 이 내용에 대해 정리를 좀 해두려고 합니다. 아마 main() 함수 안에 정의한 a, b를 당연히 sum() 함수에서 쓸 수 있다고 생각하는 거 같습니다. ㅜㅜ #include int sum(int p, int q) { return a + b + p + q; } int main() { int a = 10; int b = 20; int c = 100; int d = 200; printf("%d", sum(c, d)); return 0; } C언어의 변수에는 지역 변수, 전역 변수, 그리고 외부 변수로 크게 3가지로 나눌 수 있습니다. (정적, 레지스터 변수로도 나눌 수 ..

C Programming 2022.11.06