티스토리 뷰
- const
: 상수표 같은 읽기 전용 변수에 사용
: 혹 const 안붙인 상수 변수중 멤버 하나만 바꿔도, .const/.bss에 메모리 이중으로 잡히고 초기화때 복사도 함
: const char *A; A = "sample"(OK); *A = 'c'(X); A는 상수문자 포인터므로, A가 가리킨 *A는 상수문자이므로 변경불가
: char * const A = "sample"; A[1] = 'i'(OK); A++(X); A는 상수 (문자포인터)므로, 주소값이 상수로 변경불가
- volatile
: 외부장치/인터럽트에 의해 변경되는 메모리, 딜레이를 위한 루프 등 일반적인 컴파일러가 변경할 코드를 못 건드리게 함
: 데이터가 휙 날아가거나 일시적이기 때문에 (volatile의 뜻), 컴파일러가 최적화 안함
: volatile int i; for (i=0; i<10000; i++); 딜레이를 위한 코드인데, volatile이 없으면 릴리즈 컴파일러는 제거해 버린다.
: volatile int A; A =100; do_external_something(); A=200; 외부장치가 함수에서 A를 이용하는데,
volatile이 없으면 컴파일러가 A를 대입하는 위치를 바꾸거나 둘 중에 하나를 없앨 수도 있다.
- static
: 함수나 글로벌변수 앞에 쓰이면, 해당 파일에서만 보인다는 얘기 (OBJ에 static 함수 이름은 사라짐)
: 로컬변수 앞에 쓰이면, 함수호출에서 리턴할 때 그 값을 정적으로 보관했다 다시 쓴다는 얘기
: FILE A, static void function_A_1(); FILE B, function_A_1(); 하면 컴파일 에러
: funtion() { static int i=0; i++; ...} funtion() 호출할 때마다 i는 1씩 증가함
- extern
: 다른 파일에 선언된 변수를 참조해서 쓴다는 얘기
: 공용 헤더에 extern을 안 붙이고 변수를 선언하면, 여기저기 메모리가 잡히므로 어떤 컴파일러는 에러
: 하나의 소스 파일에서만 extern을 떼고, 나머지는 다 붙여야 함
'프로그래밍 > C' 카테고리의 다른 글
마이크로프로세서 0517 (0) | 2018.05.24 |
---|---|
마이크로프로세서 0510 (0) | 2018.05.10 |
[자료구조] 3일차_과제(180323) - 연결리스트 (0) | 2018.03.30 |
[자료구조] 4일차_과제(180323) - 재귀함수 (0) | 2018.03.30 |
[창의적it 프로그래밍] 2차 과제 -동적메모리와 연결리스트- (0) | 2018.03.21 |
- Total
- Today
- Yesterday
- oracle
- 이진탐색 #중복
- DevOps
- nuxt.js
- Azure
- aws
- svelte
- Cloud
- RDBMS
- Next.js
- Angular
- MySQL
- REACT
- node.js
- Quasar
- Gatsby.js
- Remix
- alpine.js
- SQLite
- gcp
- nosql
- PostgreSQL
- vue.js
- vue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |