Programming/C++ 27

[C++] Null Ptr (널포인터) 기본 다지기

오늘은 C++11 에서 부터 추가된 Null Ptr(널 포인터) 에 대해 살펴 보겠다. nullptr 먼저 아래의 코드를 보자 위의 2줄은 ok이지만, 마지막 2줄에서는 error가 발생 한다. 왜 일까? #include int main(int argc, const char * argv[]) { // insert code here... int n1 = 0; // 1. ok int* p1 = 0; // 2. ok int* p2 = 10; // 3. error int* p3 = n1; // 4. error } 먼저 int n1 = 0; 구문에서 이 '0'에 대해서 생각 해보자. 이 '0'은 바로 정수(int)형 literal 이다. 즉 포인터 변수 초기화에 사용이 될 수 있다. (포인터로 암시적 형 변환) ..

Programming/C++ 2024.02.17

[C++] Const, Return, Rvalue - Reference

전 포스팅에 이어서 Reference의 활용으로 Const, Return, Rvalue에 대해서 알아보자. Const Reference 아래와 같은 예시가 있다고 생각해보자, #include struct Rect { int left; int top; int right; int bottom; }; void foo(Rect r) { } int main(int argc, const char * argv[]) { // insert code here... Rect rc = {1,1,5,5}; foo(rc); } 여기서 foo 함수에 Rect 타입 변수 rc를 전달하는데 "foo 함수 안에서는 rc의 상태는 변경되면 안된다." 라는 규칙이 적용이 되면 우리는 Call by value로 전달하면 된다. Call by..

Programming/C++ 2024.02.06

[C++] 표준 입출력

C 언어와 C++ 언어의 표준 입출력의 차이점에 대해서 알아보자 먼저 아래 구문을 통해 C언어 스타일의 입출력 표기 하는 방법과 C++ 언어의 입출력 표기하는 방법을 비교해보려고 한다 먼저 각 언어 스타일마다 표기법을 살펴보자 [C언어 Style] #include int main(int argc, const char * argv[]) { int n = 10; double d = 3.4; printf("%d, %f\n", n, d); scanf("%d", &n); } [C++ 언어 Style] #include int main(int argc, const char * argv[]) { // insert code here... int n = 10; double d = 3.4; std::cout

Programming/C++ 2024.01.31

[C++] Pointer(포인터)[상]

이번 포스팅에서는 포인터에 대해 알아보자 ! 정의 - 변수를 가리키는 변수 - 메모리 주소를 가리키는 변수 - 메모리 주소를 저장하고 있는 변수 이다. 일반적으로 * 키워드를 사용하고 있는 변수라고 보면 된다. 아래와 같이 pointer변수의 value값과 num변수의 주소 값이 같은 것을 볼 수 있다 예제(포인터) 위의 내용을 코드로 나타내면 다음과 같다. ※여기서 &연산자는 단향일 경우는 주소를 나타내는 연산자이다. 다항일 거유는 비교구문으로 and표시로 사용 int num = 10; int* pointer = # 그럼 이 결과가 어떻게 되는지 한번 살펴보자. #include using namespace std; int main() { int num = 10; int* pointer = &nu..

Programming/C++ 2021.12.25

[C++][Study] 내가 만드는 문자열 클래스(연산자오버로딩, 복사생성자)

우리가 만든 MyString 문자열 클래스에 == 연산자 오버로딩하여 문자열 비교 기능을 추가해보자 연산자 오버로딩이란? +, -, ==, [ ]와 같은 기본적으로 정의되어 있는 연산자 들을 우리의 입맛에 맞게 변형해서 사용할 수 있는것을 의미 operator 연산자 기본 구조는 다음과 같다. "(리턴타입) operator (연산자)(연산자가 받는인자)" 변수 정의 1) char* string_content : 문자열 데이터를 가르키는 포인터 2) int string_length : 문자열 길이 3) int memory_capacity : 현재 할당된 용량 char* string_content; int string_length; int memory_capacity; 생성자 소멸자 정의 1) 'a', 'b..

Programming/C++ 2021.12.25

[C++][Study] 내가 만드는 String 문자열

string 클래스를 직접 만들어, 우리가 string a = "a" 이렇게 쉽게 작성했던 것들이 어떻게 동작하는지 이해를 해보고자 한다. 먼저 정의 부분은 다음과 같다. #include class string { char *str; int len; public: string(char c, int n); // 문자c 가n 개있는문자열로정의 string(const char *s); string(const string &s); //~string(); void add_string(const string &s); // str뒤에 s를 붙인다. void copy_string(const string &s); // s를 복사한 값을 str에 대입한다. int strlen(); // 문자열 길이 리턴 }; 변수는 *s..

Programming/C++ 2021.12.16

Xcode & SFML 셋팅하기

https://youtu.be/WOyp5n2FmZY 초기 셋팅은 위에 내용 참고하고 이거 진행 후에 에러가 있었던 부분에 대해서 추가 셋팅 해야하는 방법에 대해 적는다 우측에 Project Document의 project format을 xcode 12.0-compatible로 변경한다 (최신 버전) Build Phase 부분에서 Runscript부분에 For install builds only에 check를 해준다 마지막으로 권한 허용을 해줘야함 이렇게 모든곳 이라는 항목이 없으면 터미널을 이용하여 권한 설정 을 해야함 모든 곳 활성화 : sudo spctl --master-disable 모든 곳 비활성화 : suto spctl --master-enable 모든곳 활성화/비활성화 상태 확인 sudo sp..

Programming/C++ 2021.07.07

[C++] C++와 표준 라이브러리 초단기 속성코스(포인터, 참조, const, 타입추론)

출저 : 책, 전문가를 위한 C++ 메모리 공간을 적당히 할당하기만 하면 어떠한 값이라도 힙에 저장할 수 있다. 예를 들어 정수값을 힙에 저장하려면 정수 타입에 맞는 메모리 공간을 할당해야하는데 이때 다음과 같이 포인터를 선언해야 한다. int* myIntegerPointer; int 타입 뒤에 붙은 별표(*)는 이 변수가 정수 타입에 대한 메모리 공간을 가르킨다는 것을 의미한다. 이 때 포인터는 동적으로 할당된 힙 메모리를 가리키는 화살표와 같다. 아직 값을 할당 하지 않았기 때문에 포인터가 구체적으로 가리키는 대상은 없다. 이를 초기화 되지 않은 변수 라 부른다. 변수를 선언한 후에는 반드시 초기화 해야한다. 특히 포인터 변수는 초기화 하지 않으면 어느 메모리를 가르키는지 알수 없기 때문에 반드시 초..

Programming/C++ 2021.02.03

[C++] C++와 표준 라이브러리 초단기 속성코스(반복문, 스트링, 스택 & 힙)

출저 : 책, 전문가를 위한 C++ ① 반복문 컴퓨터는 같은 일을 계속 반복하는데 뛰어나다. 이를 위해 C++는 while, do.while,for, 범위기반 for 등 네가지 반복 메커니즘을 제공한다. ② while문 while문은 주어진 표현식이 true가 될 때 까지 일정한 코드 블록을 계속해서 반복한다. 다음 코드는 This is silly. 라는 문장을 다섯번 출력한다. #include int main() { int i = 0; while (i < 5) { std::cout

Programming/C++ 2021.02.03