C++/모두의코드

1장

twoweeks-within 2025. 1. 29. 22:12
#include <iostream>

int main() {
  std::cout << "Hello, World!!" << std::endl;
  return 0;
}

iostream :  Input Output stream ~= stdio 

 

 std : 이름 공간(namespace)  :: 표준 라이브러리의 (iostream) 모든 함수, 객체 등 정의 

<>

나만의 namespace 를 만들자

 

"header1.h"

namespace header1 {
int foo();
void bar();
}

 header1 namespace 에는 함수2개 정의

#include "header1.h"
#include "header2.h"

namespace header1 {
int func() {
  foo();           // 알아서 header1::foo() 가 실행된다.
  header2::foo();  // header2::foo() 가 실행된다.
}
}  // namespace header1

//  header1 안의 foo()는 그냥해도됨

    but  header2 의 foo()는 namespace에 없으므로 따로 앞에 붙여줘야함

// namespace가 다르다면 같은 함수 이름을 써도됨

using header1::foo;
// foo는 앞으로 header1의 foo만 쓸거야 
using namespace header1;
// header1 을 앞으로 계속 namespace로 쓸거야

  BUT) std는 쓰지마! 표준은 지켜주자

 

cout  : 표준출력 // stdout   " >> "

cin    : 표준입력 // stdin     " << "

 

namespace 만 하고 이름을 안붙여주면 // static 과 동일 

  > 해당 파일 내에서만 접근

 

// 구글)  변수 이름: 띄어쓰기 >   '_'  <>  함수 이름 : 띄어쓰기 > 대문자

 

//switch 문) default :: 케이스 외의 값

 

Referrnce : ' & '

  : 원래 변수와 똑같은 주소를 사용

     > 포인터와 달리 별도의 메로리 사용 X

 

int& another_a = a;

  : another_a 의 값에 int 값을 넣음

  : another_a 의 값을 넣으면 a의 값도 같이 바뀜

> 한번 정의시 재정의 불가

int& another_a = b; 
// 재정의 불가 !
int b=3;
another_a =b;
// 값만 b로 바꿔주는것 > 가능
// another_a = b = 3 = a

 

 // 그냥 referce만 하고 값을 안쓰면 굳이 메모리를 안먹음

  >

int& arr[2] = {a, b};

   >> 문법적 금지! : 빈공간이니깐

int arr[3][2] = {1, 2, 3, 4, 5, 6};
int (&ref)[3][2] = arr;

 

  >> 이러면 가능

 

// 참조자의 참조자는 금지! 

    > int&& : X

int change_val(int &p) {
  p = 3;

 > 주의 !

   ( int &p ) 를 인자로 받으면..

   int &p = number  로서 reference로 받아옴

  <> 

   ( &p ) 는 주소를 받아옴 

 

std::cin >> user_input;

// cin 은 user_input 을 reference !   <> C언어에서 처럼 &로 주소값 보내줄 필요없음

 

상수 reference 

  int& ref = 4;

  > X   // ref=5 , ref=6 > 4를 5로? 5를 6으로 바꿔? > 이상해

>>

  const int& ref = 4;

  int a= ref;

  > a = 4

 

reference return

int& function() {
  int a = 2;
  return a;
}

 int main()

{

  int  b= function();

}

::   반환 > a 의 주소 > local 변수라서 함수 종료시 소멸 (스택 에서 해지)

    > static 으로 하면 되긴함

<>

int function(){ } : 값을 반환

+

int& function(int& a) {
  a = 5;
  return a;
}

 int main()

{

  int b=2;

   int c = funtion(b);

}

> int&a= b = 5  > c =5

 

1. int& a = b; 

    > a는 b 의 주소를 사용

2. a=5 > b=5

 > int& function(b) = int& a = b = 5  

3. c = b의 값 = 5    

 

 

 

 

>> 나중에 큰 영역을 레퍼런스 한번으로 전달할 수 있음

'C++ > 모두의코드' 카테고리의 다른 글

7장  (0) 2025.02.04
6장  (0) 2025.02.02
5장 // 5.3 뒷부분은 복습때  (0) 2025.02.01
4장 이어서..  (0) 2025.01.31
3장, 4장  (0) 2025.01.30