반응형

【 C 언어 】 #43 데이터형에 따른 메모리 할당 크기 확인하기


 데이터 유형에 따라 메모리를 할당 받는 크기가 다르다. 예를 들어 정수형인 int는 4byte(1byte 는 8bit), char형은 1byte... 요즘 처럼 아두이노 등을 활용할 일이 많은 상황에서 작성 프로그램이 커질 경우, 데이터 유형에 따른 메모리 할당 크기를 파악하고 있으면, 변수 선언시, 비효과적으로 메모리를 찾이하는 것을 방지 할 수 있다. 


▶ 문제  :  데이터 유형에 따른, 다음 각 변수들을 선언하고 각각의 메모리 사이즈를 화면에 출력하라.  (출력할 유형 : int, char, short, long, float, double)


▶ 실행 결과 :


(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- 데이터 유형에 따라 변수명을 선언한다. 

- 변수 유형에 따른 메모리 크기를 확인 할 수 있는 함수는 sizeof()  이다. (byte 단위)

- 위 6가지 외에도, 부호를 나타낼 수 있고 없고에 따른 unsigned 가 붙는 유형 등이 있다. 




▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  


43 데이터형의 메모리 할당크기 확인하기.cpp



반응형

【 C 언어 】 #42 공용체 (union) 이해하기

Language/C & C++ 2018. 5. 8. 15:59 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #42 공용체 (union) 이해하기



 공용체는 구조체와 선언 및 사용 방법이 매우 유사 하다.  구조체 처럼 서로 다른 데이터 유형을 하나로 묶어 사용할 수 있는 장점이 있으며, 구조체와의 차이점은 정의 된 변수들의 메모리 할당 방식에 차이가 있다. ( 변수가 할당 될 때 하나의 메모리 공간에 여러 변수들의 메모리가 공용으로 할당 되어 사용된다 )


▶ 문제  : int i, int j 를 공용체로 묶어 선언하고  i = 3을 대입 후 printf 문으로 i의 값을 출력하고 ,  j = 5  를 대입 후 printf 문으로 j의 값을 출력하고 난 후 ,  다시 i의 값을 출력해 보라. 

 (여러 타입의 변수를 공용체로 묶어 사용할 수 있으나 여기서는 int 타입만 사용하였다.  공용체 변수명 등은 임의로 정하라)


▶ 실행 결과 :


(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- 공용체 또한 구조체와 마찬가지로 실제로 변수를 선언 하는 것은 아니며, 선언하는 변수 들의 틀(템플릿)을 만들어 주는 것에 불과 하다는 점을 기억하라.


- 공용체와 구조체의 차이점 :

 구조체의 경우 선언 하는 변수 만큼 메모리를 할당한다.  

 예) int i , char j , double k  라고 구조체로 묶어 선언 할 경우 

모두  4 byte (int) + 1 byte (char) + 8 byte (double) = 13 byte 의 메모리를 할 당하게 된다.   즉, 메모리 공간을 변수마다 각각 할당하여 사용함


 그러나 공용체는 함께 선언된 변수들을 하나의 메모리에 할당하게 된다. 

단, 이때 함게 선언된 변수들중 사이즈가 가장 큰 것을 기준으로 할당 하게 된다


 예) int i , char j , double k  라고 공용체로 묶어 선언 할 경우 

모두  4 byte (int) , 1 byte (char) , 8 byte (double) , 중 용량이 가장 큰 8 byte 를 기준으로 메모리를 할 당하게 된다.  따라서 위 프로그램의 실행결과를 보면 i = 3 이 입력 되었음에도 불구하고 j=5 가 입력 된 후에는 , (동일 번지의) 메모리를 공유하고 있던 i에도 5가 입력 되어 버린 것이다. 

즉, 메모리 공간을 공용체로 선언된 모든 변수들이 같이 사용함.


- 공용체는 과거 마이크로 보드 처럼 메모리 용량이 작아 프로그램의 제약이 많았던 상황에서 주로 사용되었으며, 메모리를 순차적으로 사용하면 되는 프로그램에서 주로 사용된 기법이었다.  




▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  


42 공용체 (union) 이해하기.cpp




반응형
반응형

【 C 언어 】 #41 사용자 정의 데이터형( typedef ) 이해하기



 C++ 에서 사용되는 데이터형 등을 C언어에서도 사용 할 수 있도록 사용자가 정의하여 쓸 수 있는 데이터형을 말한다.  다르게 얘기하면 내장함수로 존재하지 않은 변수명을 프로그램 내에서 내장함수 인것 처럼 사용이 가능하다. 
즉, 사용자가 임의로 데이터형을 정의해서 사용할 수 있다.


▶ 문제  : C++의 내장 함수인 bool 형을 C 코딩툴에서도 사용 할 수 있도록 사용자 정의 데이터 형을(typedef) 이용하여 정의하고, 숫자 '1'을 입력을 받으면, 
'true'를 출력하고 숫자 '0'을 입력 받으면 'false'를 출력하고, 그 외 숫자를 입력 받으면 " 
1과 0 중에 하나를 입력하세요 " 라는 메세지를 출력 하는 프로그램을 작성하라.  

( 단, 본인은 C++ 이 지원 되는 코딩 툴에서 작성하기 때문에, 'bool' 은 이미 정의 되어 있다. 따라서 정의 되어 있지 않은 'bools'라는 변수명을 사용 하였다)


▶ 실행 결과 :


(이미지 클릭, 확대해서 보세요)




▶ 포인트 


- typedef 사용 형식 

- 위와 같이 선언 하고 나면, 'Condition' 이라는 변수를 int 형으로 다음과 같이 선언이 가능 하다.  " bools Condition "



▶ 프로그램 (답안 예시) : 


(이미지 클릭, 확대해서 보세요)



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




▶ 소스코드 다운로드 :  


41 사용자 데이터형(typedef) 이해하기.cpp





~~~~~~~~~~~~~~~~~~ 추가 설명 ~~~~~~~~~~~~~~~~~~~~~~~~~


'typedef' 문은 구조체 나 공용체, 열거형 등에서도 사용 할 수 있다. 


1). 구조체 사용 예시


typedef struct

{

int kor;

int eng;

int math;

} Average;


Average  AV;     // 원래는 'struct Average AV;' 라고 선언해야하나, 
AV.kor = 80;      // 이처럼 줄여서 사용할 수 있게 된다.



2). 공용체 사용 예시


typedef union

{

char ch;

int Count;

} Pluse;


Pluse  PP;             // 원래는 'union Pluse PP;' 라고 선언해야하나, 
PP.Count =  10;     // 이처럼 줄여서 사용할 수 있게 된다.




반응형

【 C 언어 】 #40 열거형(enum) 이해하기

Language/C & C++ 2018. 5. 4. 10:01 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #40 열거형(enum) 이해하기



 열거형은 일정한 순서를 가진 상수를 만드는데 사용되며, 순차적으로 나열, 열거 한드는 뜻으로 열거형이라 한다. 


▶ 문제  : 열거형 선언 함수인 'enum'을 사용하여, 월, 화, ... , 일요일 , 순서로하여, 특정 요일에 임의 숫자를 지정 후  해당 숫자를 출력하도록 한다. (아래 실행결과 참조)


▶ 실행 결과 :



▶ 포인트 


- enum { Monday, Tuesday=1, Wednsday=2, Thursday, Friday, Saturday, Sunday }  와 같은 형태로 사용할 수 있다.

- enum 의 상수 값은 지정 하지 않으면 0부터 순서대로 할 당 된다. 

 (7개의 인자가 있고 모두 초기 값이 없는 경우 할당 되는 상수 값은 : 0~6 이다)

 (만약 첫 번째 인자의 초기값만 3으로 지정하면, 상수 값은 : 3~9 가 할당 된다)



▶ 프로그램 : 


(이미지 클릭, 확대보기 하세요)




+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




▶ 소스코드 다운로드 :  

40 열거형 이해하기 코드.cpp







반응형