2018/09
-
포인터와 역참조Coding/Tip !! 2018. 9. 19. 05:12
포인터 * * 란 역참조(Dereference)연산자라는 의미이다. -> 포인터 변수에는 메모리 주소가 저장되는데 이 메모리주소의 값을 가져올때 사용하는 것이 바로 역참조 연산자(*)이다. 1234567int *pointer; // 포인터 변수 선언 int test =1; // test에 1을 저장 pointer = &test; // test의 메모리 주소를 포인터 변수에 저장한다는 의미 *pointer = 7; // 역참조 연산자를 의미함으로 test의 메모리 주소에 접근하여 7을 저장함 이 경우cout
-
friend 키워드 사용Coding/Tip !! 2018. 9. 19. 01:32
friend 지정되어있는 해당 함수 또는 클라스에 대해 자신의 private이나 protected 멤버를 public 권한으로 접근하게 해주는 기능을 하는 키워드이다. 사용법friend class 클래스이름; friend 함수이름; friend 클래스이름::함수이름; -> 이를 사용하면 객체 사용이 편리해지나 캡슐화를 망가뜨리게되는 단점이 있다.-> 그렇기 때문에 너무 많이 사용하는 것은 권장하지 않는다. 아래와 같은 코드를 예시로 들겠다. main.cpp1234567891011121314#include #include "test.h" using namespace std; int main(){ testa a; testb b; b.func(a); return 0;} test.h1234567891011121..
-
::연산자와 . 연산자Coding/Tip !! 2018. 9. 19. 01:08
:: 연산자는 클래스에 사용되고. 연산자는 객체에 사용된다. Aclass aa;가 있고 해당 클래스인 Aclass내에 Func 이 정의되어있다면 .연산자는 aa.Func() 객체가 함수를 호출하는데 사용될 수 있으며 ::연산자는 void Aclass::Func()으로 클래스를 정의할 떄 사용되거나 static으로 구현된 함수를 클래스에서 호출하는데 사용된다. 1234567891011121314151617181920#include using namespace std; class Aclass {public: Aclass(){} static void Func(); private:}; void Aclass::Func(){ cout
-
static 변수Coding/Tip !! 2018. 9. 18. 02:34
보통 초기화를 한 변수는 Data 영역에 메모리가 할당되며, 초기화를 하지 않은 변수들의 경우 BSS 영역에 할당된다. 하지만 Static 변수는 초기화를 하지 않은 상태에서 해당 변수를 사용하지 않을 경우 메모리 자체가 할당되지 않는다 그에 반해 전역변수는 초기화를 하지 않더라도 무조건 메모리에 올라간다. Static 객체의 경우 처음 구문이 수행되는 시점에 처음 생성자를 호출하도록 할 수 있으며 이를 함수화해서 호출하면 생성자의 호출 시점을 조정하는게 가능해진다. 다른점은 초기화를 한 번만 한다는 점 (프로그램이 종료될 때까지 메모리공간에 존재한다)과 지역변수와 달리 해당 함수가 반환되어도 소멸되지 않는다. Static 변수는 지역변수와 전역변수의 성질을 둘 다 가진다고 할 수 있다.
-
const 참조자Coding/Tip !! 2018. 9. 17. 18:53
& 연산자는 변수의 주소값을 반환한다우리가 pointer를 공부할 때 한번쯤은 보게되는 &이다.&는 참조자선언을 의미한다. 변수의 주소값을 반환하려면 할당된 메모리 공간이 필요하고 그렇기 때문에 이는 상수가 아닌 변수에 사용된다.12345678#include int main(){ int num = 7; int *pointer = # int &refer = num; return 0;} int &refer = 7; -> 참조자는 이미 선언된 할당된 메모리를 가진 변수를 대상으로 사용이 가능함, 변수가 아닌 상수를 참조했음으로 잘못됨int &refer; -> 아무것도 참조하는 대상이 없음int &refer = NULL; -> NULL을 참조함으로 에러임 하지만 예외의 경우가 있다. const 참조자는 ..
-
댕글링 포인터 ( Dangling Pointer)Coding/Tip !! 2018. 9. 17. 18:28
댕글링 포인터란.. 해제된 메모리 영역을 가리키고 있는 포인터를 의미다. 이러한 댕글링 포인터가 가리키고 있는 메모리는 더이상 유효하지 않음으로 Premature free란 의미인 너무 급한 해제 또는 조숙한 해제라고 하기도 한다.메모리 해제 한 뒤에 해제된 메모리에 접근하거나 함수 호출에서 자동변수를 가리키는 포인터를 반환하기에 아래의 결과가 나타나게 된다. 12345678910111213#include int main(){ bool a = true; int *point; if(a){ int dang=5; point = &dang; } //point는 댕글링 포인터가 된다. 이유는 괄호안의 dang이 괄호를 벗어나면서 지역변수임으로 //할당된 스택영역이 제거되기 때문이다. return 0;} 댕글링 포..
-
클럭ETC 2018. 9. 14. 03:57
클럭이란!? 메인보드나 그래픽 카드, 메인보드, CPU, 메모리 등의 오직 전기가 통하는 디지털 장치에 존재하는전기적 신호를 의미하며 On/Off형태를 반복한 전류의 흐름을 이용하여 PC를 구성하는부품을 작동시키는 신호를 말함 이런 전류 흐름을 클럭 주파수 Clock Frequench 또는 클럭 Clock이라고 한다. 주파수로 표현되는 클럭은 위아래로 변하게 되는 진폭을 가진 진동이 연속적으로 발생하는데 이러한 진폭을 이용하여 PC는 0 또는 1을 나타내는 비트 단위의 신호를 각각의 장치로 전송한다. 하나의 클럭 주기가 지나게 되면 반드시 1개의 비트가 옮겨지며 1초에 1번 위아래로 진폭이 변하는 동안에0이나 1이라는 신호가 다른 장치로 옮겨진다. 클럭의 단위는 Hz(MHz, GHz)이며 클럭 속도를 나..