** 절대 이해하려 들지말고 참조형으로만 쓴다 **
연산자의 종류 | 기호 |
이항 연산자 | * , / , % , + , - |
관계 연산자 | < , <= , == , != , >= , > |
논리 연산자 | && , || , ! |
비트단위 연산자 | << , >> , & , | , ^ , ~ |
할당(대입) 연산자 | = |
복합배정 연산자 | += , -= , *= , /= , %= , <<= , >>= , &= , |= , ^= |
단항 연산자 | - , ++ , -- |
콤마 연산자 | , |
조건(삼항) 연산자 | ? : |
자료형 크기 연산자 | sizeof |
형변환 연산자 | (cast연산자) |
프로토타입이란 '표준 , 모범, 본보기'라는 뜻을 가진 단어로 어떤 함수에 대하여 미리 정의하는 것으로 함수의 표본 역할을 한다고 정의한다.
즉, 프로토타입에 의해 컴파일러는 함수의 매개변수와 반환값을 알게 된다.
기억 클래스 | 기능 설명 |
auto | 함수에서 선언되는 지역변수로 생략이 가능 |
static | 프로그램 수행 시 1회만 값이 설정되며, 변수가 선언된 블록이 호출되어도 이전 값을 계속 유지 |
extern | 프로그램의 모든 영역에서 사용되는 전역 변수 |
register | 레지스터에 저장되는 지역 변수 |
static 변수는 주 기억장치에 변수가 저장되기 때문에 프로그램의 종료 전까지 해당 변수의 값이 유지되게 된다.
즉, static 변수는 해당 프로그램 수행 시 1회만 값이 설정되고, 다음에 변수가 선언된 블록이 호출되어도 이전 값을 계속 유지할 수 있다.
extern 변수는 선언 시 다른 파일에서도 이용이 가능하다.
전역 변수라 하여 int main함수 안 부분에 적는 변수가 아닌 바깥 부분에 적는 변수라는 그런 전역 변수가 아닌
모든곳에서 참조하며 쓸 수 있다는 의미이다.
실제 프로그램에서 extern 변수는 꼭 필요한 경우 외는 사용을 하지 않는 것이 좋다.
초보자는 여러 함수로 나뉘어진 프로그램 작업 시 전역 변수를 편리하다는 이유만으로 사용을 남발할 수 있기 때문에,
해당 전역변수( extern 변수 ) 값에 대한 변경이 모든 곳에서 가능하고(값이 어떻게 바뀌는지 알려면 프로그램 전체를 보아야 한다.)
메모리도 프로그램 종료 시까지 계속 차지한다는 단점이 된다.
register 변수는 매우 빠름을 요구하고, 반복이 많이 사용되는 변수에 적용한다. ( for문 같은 구문에 )
CPU 내부에 있는 레지스터의 빠른 속도의 도움을 얻기 위한 목적이지만 현대 컴퓨터의 사양이 좋아지고 하다보니
효과는 그리 크지 않다. 이러한 기억부류가 있다는 것만 알아두자.
명령 | 기능 설명 |
#define | 매크로 함수를 정의 |
#include | include 파일을 선언 |
#undef | 매크로 함수의 해제 |
#ifdef | 매크로 정의를 테스트 |
#endif | #if문의 끝을 의미 |
#ifndef | 매크로 정의 안 된 여부를 테스트 |
#if | 컴파일 조건을 테스트 |
#else | #if 테스트에 대한 false 명령의 선언 |
매크로의 정의의 장점
- 일반적인 수치적 표현에 비하여 프로그램의 이해를 높일 수 있다.
- 자주 사용되는 복잡한 수를 간단히 변수처럼 대치할 수 있다.
- 긴 문장을 짧게 표현할 수 있다.
- 값의 변동이 자주 있는 내용을 간단히 대치하여 프로그램 관리의 효율을 높일 수 있다.
#include <파일명> 그리고 #include "파일명" 의 차이점
< > 의 경우는 c언어에서 정의된 include 디렉토리에서 명시된 파일을 찾는 과정을 수행한다.
" " 의 경우는 현재 작업이 이루어지고 있는 디렉토리와 지정된 include 디렉토리에서 해당 파일을 찾는 과정을 수행한다.
#ifdef ~ #else ~ #endif
ifdef는 #define A처럼 정의만 되어 있다면 실행을 도와준다.
#endif는 이 구문의 종료를 의미한다.
ex )
#ifdef A // 상단에서 #define A가 정의 되어있는 경우
#include "a.h"
#define ABC 5
#else // 상단에서 #define A가 정의 되어있지 않은 경우
#include "b.h"
#endif
#ifndef ~ #else ~ #endif ( 사용되는 날이 생길때 좀 더 찾아보기 )
ifndef는 #define A같은 A가 정의 되어 있지 않을때 실행한다.
변수가 인수를 가지고 있는지 여부도 체크한다.
ex )
#ifndef A // 상단에서 #define A가 정의 되어있지 않은 경우
#include "a.h"
#define ABC 5
#else // 상단에서 #define A가 정의 되어있는 경우
#include "b.h"
#endif
'Basic > C' 카테고리의 다른 글
난해한 포인터들 정리 (0) | 2015.03.07 |
---|---|
포인터, 구조체, typedef (0) | 2015.03.07 |
기본 입출력 함수의 이해 , 데이터 형 (0) | 2015.03.07 |
기본 입출력 함수의 이해 , 데이터 형 (0) | 2015.03.07 |
C언어의 개요 (어셈블리 언어 , 고급 언어, 컴파일러, 인터프리터 등) (0) | 2015.03.07 |