반응형

** 절대 이해하려 들지말고 참조형으로만 쓴다 ** 

 

 연산자의 종류

기호 

 이항 연산자

 * , / , % , + , -

 관계 연산자

 < , <= , == , != , >= , >   

 논리 연산자

 && , || , ! 

 비트단위 연산자

 << , >>  , &  , |  , ^  , ~

 할당(대입) 연산자

 =

 복합배정 연산자

 += , -=  , *= , /= , %= , <<= , >>= , &= , |= , ^=

 단항 연산자

 - ,  ++ , --

 콤마 연산자

 ,

 조건(삼항) 연산자

 ? :

 자료형 크기 연산자

 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

반응형