study/C++

자료형 bool

IT공부 2020. 5. 19. 20:17
반응형

C언어 복습 

 

키워드 const 의미 

- const int num= 10;  --> 변수 num을 상수화!

 

- const int * ptr1 = &val1; --> 포인터 ptr1을 이용해서 val1의 값을 변경할 수 없음

 

- int * const ptr2 = &val2; --> 포인터 ptr2가 상수화 됨

 

- const int * const ptr3 = &val3;  --> 포인터 ptr3가 상수화 되었으며, ptr3를 이용해서 val3의 값을 변경할 수 없음

 

실행 중인 프로그램의 메모리 공간 

 

- 데이터   :  전역 변수가 저장되는 영역 

- 스택      :  지역변수 및 매개변수가 저장되는 영역

- 힙         : malloc 함수 호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당이 이뤄지는 영역

- malloc&free : malloc 함수호출에 의해 할당된 메모리 공간은 free 함수 호출을 통해서 소멸하지 않으면 해제 안됨

 

Call-By-Value & Call-By-Reference

 

Call-By-Value는 값을 인자로 전달하는 함수의 호출 방식

 

Call-By-Reference는 주소 값을 인자로 전달하는 함수의 호출 방식

 

예)

 

#include<iostream>
using namespace std;

void SwapByValue(int num1, int num2)
{
	int temp=num1;
    num1=num2;
    num2=temp;
}// Call-by-value

void SwapByRef(int * ptr1, int * ptr2)
{
	int temp = *ptr1;
    *ptr1=*ptr2;
    *ptr2=temp;
}// Call-by=reference


int main(void){
	int num1=20, num2=30;
	SwapByValue(num1, num2);
	cout<<"call-by-value 호출 후 : "<<num1<<' '<<num2<<endl;
	SwapByRef(&num1, &num2);
	cout<<"call-by-reference 호출 후 :"<<num1<<' '<<num2<<endl; 
	
	return 0; 
}

실행결과 

call-by-value 호출 후 : 20 30

call-by-reference 호출  후 : 30 20 

 

매개변수로 보낸 변수에 대한 값이 변경이 이루어지는 것과 아닌 것에 차이가 있다. 

 

 

새로운 자료형 bool

 

bool형은 C언어에는 존재하지 않고, C++에만 존재하는 자료형이다. 

 

'참을 의미하는 true와  '거짓'을 의미하는 false

 

#define TRUE  1 

#define FALSE 0

 

TrueAndFalse.cpp

#include<iostream>
using namespace std;

int main(void)
{
	int num=10;
	int i=0;
	
	cout<<"true:"<<true<<endl;
	cout<<"false:"<<false<<endl;
	
	while(true)
	{
		cout<<i++<<' ';
		if(i>num)
			break;
		
	}
	cout<<endl;
	
	cout<<"sizeof 1:"<<sizeof(1)<<endl;
	cout<<"sizeof 0:"<<sizeof(0)<<endl;
	cout<<"sizeof true:"<<sizeof(true)<<endl;
	cout<<"sizeof false:"<<sizeof(false)<<endl;
	return 0;
}

실행결과 

true: 1

flase: 0

0 1 2 3 4 5 6 7 8 9 10

sizeof 1: 4

sizeof 0: 4

sizeof true: 1

sizeof false: 1

 

"true와 false는 각각 1과 0을 의미하는 키워드이다"