컴퓨터 공학 일지/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