카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/31

C 언어 변수 키워드

컴퓨터:
연산장치, 기억장치
연산(cpu)
기억: RAM(주기억), HDD(보조기억)

RAM 변수 생성 영역.
stack: 자동 변수 a = 5;
heap: 동적할당 malloc()
data: 정적변수 static a = 5;

원형
기억부호 자료형 이름 = 초기값
기업부호: auto, static, register
자료형: 정수, 실수, 변수, 지역변수, 전역변수, 구조체, 공용체

지역변수: scope { } 안에 선언
전역변수: scope { } 밖같쪽 선언

전역변수.
static 선언: 전역으로 설정 되며 메모리의 data 영역에 위치한다.
지역변수 선언에서 static 키워드를 사용하면 전역변수와 동일하게 사용된다.

exten 키워드: 외부 파일에 선언된 외부 변수 선언. 선언과 정의를 분리한다.
exten 선언시 외부 파일에 정의된 변수 접근한다.
함수에 exten 키워드를 사용하지 않아도 자동으로 호출 한다.

지역변수
매개변수: 인자 전달 변수는 지역변수 이며, 자동 변수이다.
즉, scope { } 사이에 동일한 변수 이름을 선언해서는 안된다.

식별자 검색 순위:
1. 가장 최근에 scope 형성된 안에서 탐색.
2. 최대 함수의 바디까지 탐색한다.
3. 그리고 없으면 전역위치에서 탐색한다.

register: 최적화에 적용하는 변수이다. 하지만 현 시대의 컴파일 및 cpu에서 높은 효율은 없다.

현한정어
const : 상수화 할 것이다.(문법적 구성 Road Only)
volatile: 최적화 금지(향후 변경될 가능성이 존재하므로 최적화 필요 없음)

최적화: 컴파일러가 한다. 번역할 때 컴파일러가 어떻게 번역 하는야에 따라 성능이 다르다.
컴파일러가 성능이 좋으면은 같은 코드라고 해도 성능은 차이가 난다.

댓글 없음:

댓글 쓰기