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을 의미하는 키워드이다"
'study > C++' 카테고리의 다른 글
malloc & free를 대체하는 new & delete (0) | 2020.05.20 |
---|---|
참조자(Reference) (0) | 2020.05.19 |
이름공간(namespace)에 대한 소개 (0) | 2020.05.19 |
매개변수의 디폴트 값(Default Value) (0) | 2020.05.19 |
함수 오버로딩(Function Overloading) (0) | 2020.05.19 |