본문 바로가기

카테고리 없음

C++ local variables, Operators, Definition, Header, Namespace

#include <iostream>

using namespace std;

int main()
{
	int x = 0;
    
    {
    	//위의 변수와 이 변수는 이름은 같더라도 할당된 공간이 다른 다른 변수이다
    	int x = 1; 
    }
    
    {
    	//여기서는 global 변수가 적용이 된다.
    	x = 3; 
    }
}

중괄호로 또 묶어 준 것은 또다른 지역을 만들어준다.

중괄호 밖으로 나왔을 때는 지역변수는 더이상 사용할 수 없어진다.

 

연습 해당 x는 어떤 것이 출력될 것인가?

#include <iostream>

using namespace std;

void doSomething(int x)
{
	x = 111;
    cout << x << endl; //111
}

int main ()
{
	int x = 333;
    
    cout << x << endl; //333
    doSomething(x);
    cout << x <<endl; //333
    
    return 0;
}

함수를 통해서 global 변수를 바꾸고 싶다면 새로운 변수명을 생성하는 것이 아니라 pointer를 지정해 주소값 자체를 넘겨주면 변수명도 바꿀 수 있을 것이다. 

 

-------------------

 

리터럴 : Literal

   - 대부분의 변수 스트링 등을 이야기 함

피연산자 : operand

   - 변수 + 연산 같이 더하는 것 ( cout << x + 2 << endl )

단항 이항 삼항, Unary, Binary, ternary

 

 

-------------------

 

컴퓨터가 컴파일을 하게 되면 코드를 순서대로 읽는다. 그래서 함수를 설정 시 위에 사전에 선언을 해두어야 한다.

forward declaration  함수를 선언할 때 위에 먼저 선언만 하는 부분

definition                  main 함수 뒤에 선언되는 부분을 나타내준다. 

 

우클릭을 하고 quick definition 혹은 forward declaration 부분으로 넘어가면 쉽게 코드를 편집 할 수 있다. 

 

-------------------

 

(the name of header file).h 후 파일을 추가해주고

사용하고자 하는 .cpp 파일에 #include "(the name of header file).h"를 넣어주면 정상적으로 헤더파일을 만들 수 있음

 

지난 학기 c언어도 배우지 않은 상태에서 헤더파일을 만들라는 과제에 굉장히 당황을 했었었다.

 

-------------------

 

namespace로 function들의 묶음을 나눌 수도 있고 namespace 안에 namespace를 넣을 수도 있다.

#include <iostream>

namespace Myspace1
{
    namespace innerspace
    {
        int doSomething(int a, int b)
        {
            return a + b;
        }
    } // namespace innerspace
} // namespace Myspace1

namespace Myspace2
{
    int doSomething(int a, int b)
    {
        return a * b;
    }
} // namespace Myspace2

using namespace std;

int main()
{
    cout << Myspace1::innerspace::doSomething(3, 4) << endl;
    cout << Myspace2::doSomething(3, 4) << endl;

    return 0;
}