컴퓨터 공학 일지/C++
C++ C 복습 문제
Basasakk
2019. 12. 16. 20:06
1. 키워드 const의 의미 [ 다음 문장들이 어떤 뜻을 가지는가 ]
- const int num=10;
- = > 변수 num을 상수화
- const int * ptr1=&val1;
- = > 포인터 ptr1을 이용하여 val의 값을 변경할 수 없음
- int * const ptr2=&val2;
- = > 포인터 ptr2가 상수화
- const int * const ptr3=&val3;
- = > 포인터 ptr3가 상수화 되었고, ptr3를 이용하여 val3의 값을 변경할 수 없음
2. 실행중인 프로그램의 메모리공간
- 데이터 : 전역 변수가 저장되는 영역
- 스택 : 지역 변수 및 매개 변수가 저장되는 영역
- 힙 : malloc 함수 호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당이 이뤄지는 영역
- malloc & free : malloc 함수호출에 의해 할당된 메모리 공간은 free 함수 호출을 통해서 소멸하지 않으면 해제되지않는다.
- Blocked Stated by Symbol : 초기화되지않은 변수들을 저장하기 위한 영역
3. Call-by-value & Call-by-reference
- 값에 의한 호출 = Call-by-value
- 참조에 의한 호출 = Call-by-reference
//Call by reference
#include <iostream>
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int a, b;
a = 10;
b = 20;
std::cout << "변환전" << std::endl;
std::cout << "a = " << a << " b = " << b << std::endl;
swap(&a, &b);
std::cout << "변환후" << std::endl;
std::cout << "a = " << a << " b = "<< b << std::endl;
return 0;
}
출력
변환전
a = 10 b = 20
변환후
a = 20 b = 10
Call by Value
#include <iostream>
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main(void)
{
int a, b;
a = 10;
b = 20;
std::cout << "변환전" << std::endl;
std::cout << "a = " << a << " b = " << b << std::endl;
swap(10, 20);
std::cout << "변환후" << std::endl;
std::cout << "a = " << a << " b = "<< b << std::endl;
return 0;
}
출력
변환전
a = 10 b = 20
변환후
a = 10 b = 20