C++/C++

4장 포인터, 배열, 포인터 연산 메모

메카인 2023. 6. 26. 22:26

◆입력을 받는 방법들

  • cin  << : 공백 이전까지의 문자열을 받아들입니다.
  • cin.get() : 문자 하나만 입력이 가능하되, 개행이나 줄넘김도 받아들입니다.
  • cin.getline(인자, 최대 크기) : 문자열을 받아들입니다. 공백 줄넘김 탭을 '₩0'로 받아들여 끝내는걸 막기위해 사용합니다.
  • getline(cin, string변수) : #include 을 하여 cin에 string의 정의되어 있지 않은 문자열 입력을 실행합니다.

 

◆배열과 포인터의 차이

  • 배열 이름은 값을 변경할 수 없는 상수이고, 포인터는 값을 변경할 수 있는 변수이다.
  • 배열의 주소를 얻는 것은 배열의 이름을 얻는 것과는 다르다.
  • &배열이름은 전체 배열의 주소가 산출된다.
  • 배열이름 +1을 해주게 되면, 자료형의 크기가 아닌 배열의 길이만큼 더해진다.
  • 배열 이름으로 포인터를 선언하려면??
  • cout에 포인터를 전달하면 주소가 출력되나 char *은 예외이니 (int *)로 캐스팅해주어야한다. 
  • 배열에 문자열을 대입할 때에는 대입연산자가 아니라 strcpy나 strncpy을 사용하자

 

◆자동 공간, 정적 공간, 동적 공간

●자동 공간(automatic storage)

  • 함수가 호출되는 순간에 자동으로 생겨나 그 함수가 종료되는 시점까지만 존재한다는 것을 뜻한다.
  • 스택에 저장된다.

●정적 공간(static storage)

  • 프로그램이 실행되는 동안에 지속적으로 존재하는 공간이다.
  • 만드는 방법은 함수의 외부에서 변수를 정의하거나, 변수를 선언할 때 static이라는 키워드를 붙인다

●동적 공간(dynamic starage)

  • new와 delete를 사용하여 작성한다.
  • 자유 공간(free store)이라 부르는 메모리 풀(memory pool)을 관리한다. 
  • 더 복잡한 메모리 대입 요청을 처리할 수 있다.