일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 게임 개발
- 복사생성자
- 언리얼엔진
- CPP
- 언리얼엔진5
- 소멸자
- 게임개발
- Unreal
- UE5
- 언리얼5
- 프로그래밍
- Unreal Engine
- 언리얼 엔진5
- cpp개발
- 생성자
- 배열
- C++
- 포인터
- effectivec++
- 프로세스
- C언어
- 디자인패턴
- BehaviorTree
- 자료구조
- 데이터구조
- 복사대입연산자
- 게임프로그래밍패턴
- 언리얼
- Unreal Engine5
- AI
- Today
- Total
목록C언어 (8)
리얼 개발
소켓을 열어 간단한 웹 서버를 만든 뒤, 운영체제의 시스템콜을 통해 다수의 클라이언트 요청을 처리해보는 연습이다. fork()웹서버가 갖춰야할 중요한 특성 중 하나는 많은 클라이언트들의 요청들을 짧은 시간안에 잘 처리 하는 것 이다. sleep 시스템콜을 임의로 추가해서 처리 지연을 추가하고, 여러 탭을 통해 동시에 여럿 접속을 한다고 가정해보자. 그럼 나중에 시도된 탭은 앞선 요청들이 다 처리가 될 때까지 접속이 지연되거나, 최종적으로 접속에 실패하는 것을 볼 수 있다. 이를 fork() 시스템콜로 자식 프로세스를 만들어 처리할 수 있다. Linux 환경에서 진행했다.#include #include #include #include #include #include #include //wait 시스템콜을..

이번에는 C, C++을 가장 어렵게 만드는 개념인 포인터에 대해 알아보고 C++에서 추가된 개념인 참조에 대해 알아보겠다. 포인터란?기본적으로 포인터는 주소를 저장하기 위한 변수이다. 메모리의 특정 위치를 가르키는 역할을 하며, 변수의 주소를 얻기 위해서는 주소 연산자 '&' 를 사용한다. 기본 형식은 다음과 같다.typename* pointer; 주소값을 저장하고, 그 주소에 접근해 들어있는 값을 가져올 수 있다. 이를 역참조라고 하며 '*' 기호를 사용한다. 정리하자면 포인터는 "주소"를 저장하기 위한 "변수" 이고 일반 변수를 선언하는 것처럼 선언하되, *만 붙이면 된다.int main() { int a = 10; int *p = &a; // p는 a의 주소를 가리킨다 cout 주..

저번 포스팅에선 함수에 대해 알아보았다. 코드를 작성하다 보면 여러개의 변수를 선언해야할 때가 온다. 최악을 가정한다면 변수 1억개를 선언해야되는 상황이 올 수 있다. 이때 배열을 알고 있다면 이런 상황을 쉽게 넘어갈 수 있을지도 모른다. 배열의 기본배열은 동일한 타입의 데이터를 여러 개 저장할 수 있는 데이터 구조다. 배열을 선언할 때는 데이터 타입과 배열의 크기를 지정해야 한다.#include using namespace std;int main(){ int Var[4]; int Var3; int Var2; int Var1; int Var0; return 0;}위의 두 변수 선언은 컴퓨터 입장에서 완전히 동일한 표현이다. 앞서 살펴본 Call stack이다. ma..

저번 포스팅에서 제어문에 대해 살펴보았다. c언어의 함수와 똑같지만 c++ 에선 더 추가적인 기능들의 함수들이 있다. 함수의 개념부터 살펴보겠다. 함수의 기본 개념프로그래밍에서 함수의 기본 개념은 프로그램을 구성하는 기본 모듈이다. 함수는 코드를 재사용 가능하게 하고, 프로그램을 논리적인 단위로 나눠준다. 한 마디로 단순 반복작업을 줄이기 위해 사용하는 것이다.함수는 반환 타입, 함수 이름, 매개 변수 리스트, 함수 본문으로 구성된다.// 함수 정의int add(int a, int b) { return a + b;}// 함수 호출int result = add(3, 4); // result는 7 함수 정의와 프로토타입#include using namespace std;int add(int a, i..

저번 포스팅에서 변수가 저장되는 방법을 살펴보았다. 보통의 코드는 순차적으로 진행되지만 중간중간 흐름이 바뀔 수 있다. 이렇게 코드의 흐름을 바꾸는 명령을 control statement 즉, 제어문이라고 한다. 이번에는 분기(Branch)와 반복(Loop)에 대해 알아보겠다. Branchifswitchgoto논리, 관계연산자모든 일이 순차적으로 흘러가지는 않는다. 적어도 C++ 프로그램에선 반드시 특정 동작을 선택할 때가 온다. if문은 선택이 분기될 때 대표적으로 사용할 수 있는 제어문이다. ( ) 안 test-condition이 참이라면 { } 안의 코드가 실행되며, 거짓이라면 { } 안의 코드가 실행되지 않는다.if(test-condition){ //코드}else{ //코드}if(test-con..

저번 포스팅에서 첫 C++ 프로그램을 만들어 보았다. 하지만 화면에 글자만 출력하는 것으로는 진짜 프로그램이라고 말할 수 없다. 프로그램에 기능을 추가하기 위해 기본적으로 데이터가 존재해야한다. (계산기에서 계산 숫자를 보여줘야 하는것처럼) 우리가 C++ 에서 다룰 수 있는 데이터는 변수, 상수, 사용자 정의 등 다양하다. 이 중에 변수에 대해 알아보겠다. 변수는 타입(int) 과 이름(count) 가 존재한다. 그럼 count 변수는 어디에 저장되야 할까? 정답은 메모리이다. 윈도우와 같은 운영체제가 메모리를 독점하고 있다. 이때 우리가 변수를 선언하면 운영체제에게서 변수 타입의 크기만큼 공간을 받을 수 있다. 그 메모리 주소를 위 프로그램에선 "count" 라는 별명으로 부르는 것이다. 이렇게 메..
첫번째 C++ 프로그램을 만들어보자 #include using namespace std;int main(){ cout 해당 코드는 Visual Studio 2022 환경에서 작성했다. 코드 작성 후 Ctrl + F5 키를 눌러 빌드 및 실행을 해보자. #include 전처리기라고 부르며 컴파일 전에 이란 라이브러리 안에 들어있는 코드들을 그대로 복사해준다.using namespace std; 말 그대로 네임스페이스라고 부르며 함수나 클래스 혹은 변수 이름들을 구별할 수 있도록 하는 논리적인 공간이다. int main()프로그램 실행시 가장 먼저, 무조건 실행되는 함수이다. 더블클릭을 게임같은 프로그램을 실행할 때 이 main() 함수가 실행된다. 시작 함수이다.{ } 함수의 범위이다. main(..
세상에는 다양한 언어가 있다. 우리가 쓰는 한국어를 제외하고도 영어, 불어, 한자 등등,, 이러한 언어들은 누군가와 이야기를 하거나 자신의 이야기를 남기기 위해 사용되고 있다. 이와 마찬가지로 프로그래밍 언어도 결국 누군가와 의사소통하기 위해 만들어졌다. 그 누군가는 바로 컴퓨터인 것이다. 프로그래밍 언어로 컴퓨터에게 할 일을 전달하면 그에 맞는 행동을 해준다. 이를 통해 컴퓨터 시스템에서 돌아가는 게임, 웹 등 소프트웨어를 만들어 낼 수 있게 되었다.따라서 C++도 컴퓨터랑 대화하기 위한 많고 많은 언어 중 하나라고 생각했으면 좋겠다. 필자의 경우 정말로 컴퓨터랑 대화하듯이 코드를 쓰면서 공부했던 것 같다. 물론 문법 같은 경우는 조금(조금 많이?)은 암기가 필요하다. 프로그래밍 언어를 공부하기 전..