본문 바로가기

cpp59

0. 교환함수(Swap) 포인터 방식 C99 ▼ 관련 개념 Pointer & Call By Address ▼ 구현 코드 void Swap(int* lhs, int* rhs) { int _temp = *lhs; *lhs = *rhs; *rhs = _temp; } ▼ 사용 예시 Swap(&lhs, &rhs); 포인터(*)를 이용한 방법이다. 포인터는 C 표준에서는 함수 인자에 직접적으로 접근할 수 있는 유일한 방법이다. CPP B.11 ▼ 관련 개념 Reference & Call By Reference ▼ 구현 코드 void Swap(int& lhs, int& rhs) { int temp = lhs; lhs = rhs; rhs = lhs; } ▼ 사용 예시 Swap(lhs, rhs); 참조자(&)를 이용한 방법이다. CPP에서 추가.. 2021. 1. 17.
3. 삼각형 그리기(2) 지난 정리에 이어 이제 쉐이더 프로그램을 만들어보기 전에 이전 코드를 정리한다. 특정 기능을 하는 코드들을 되도록이면 묶어서 함수로 만드는 것이 좋은 것도 있지만 쉐이더의 코드 역시 꽤 길기 때문이다. CreateTriangle 함수 ▼ 삼각형 정점 좌표, VAO, VBO를 모두 함수로 빼낸다. GLuint VAO, VBO; void CreateTriangle() { GLfloat vertices[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f }; // OpenGL 정점 배열 생성기를 사용해서 VAO를 생성 glGenVertexArrays(1, &VAO); // 우리가 생성한 VAO를 현재 수정 가능하도록 연결한다. glBindVertexA.. 2021. 1. 17.
210115(금) 코로나의 영향으로 프로그래밍 수업의 순서가 꼬여서 중간에 알고리즘 수업을 진행했다. 먼저 교수님께서 프로그래밍 수업을 듣는 우리가 얼마나 C에 대해서 이해하고 있는지 확인하기 위해 문제를 내주셨다. 두 배열의 합을 저장하는 배열 출력하기 ▼ 문제 내용 인자를 5개~10개 가지는 동일한 크기의 배열 두 개를 선언하고 임의의 값으로 초기화 한다. 배열 하나를 더 이용해서 두 배열의 같은 색인의 인자들끼리 합을 저장하고 출력하는 함수를 만들어서 출력하라. ▼ 문제 목적 배열과 순환문에 대해서 이해하고 있는지 확인하는 문제다. ▼ 내가 푼 코드 #include void Print(int a, int b, int c) { printf("iArr1(%d) + iArr2(%d) = iArrR(%d)\n", a, b,.. 2021. 1. 15.
14. 할당, 해제 C와 CPP를 사용하는 또 다른 이유인 동적 할당을 정리한다. 동적 할당은 양날의 검으로 숙련자가 사용하면 극한의 최적화를 구현할 수 있는 반면 반대의 경우는 극한의 발적화를 이룰 수 있다. 어찌 되었던 극한이란 타이틀을 얻을 수 있는 점에서 가치는 있다.(?) 동적 할당을 이해하기 위해서는 먼저 메모리 저장 공간을 이해해야 한다. 메모리 저장 공간 ▼ 메모리 저장 공간 예시 코드 #include #include // ++ Data 영역 ++ const static int gData = 1; int main() { // ++ Stack 영역 ++ int lData = 2; // ++ Heap 영역 ++ // C WAY int* dDataWithC = static_cast(malloc(sizeof(int).. 2021. 1. 15.