일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ASW(Application SpaceWarp)
- Windows Build
- Virtual Byte
- URP
- 게임 수학
- Cell Shader
- Rim Light
- OculusMotionVectorPass
- Three(Two) Tone Shading
- Specular
- AppSW
- 작업 집합
- 개인 바이트
- Cell Look
- 가상 바이트
- Cartoon Rendering
- 프로그래밍 기초
- 벡터
- C언어
- VR
- Private Bytes
- ColorGradingLutPass
- 메모리 누수
- URP로 변경
- working set
- Toon Shader
- 3d
- Today
- Total
목록Study (16)
WinCNT
구조체(Structure Type)란? 구조체란? 하나 이상의 변수를 묶어서 새로운 자료형(객체)을 정의하는 도구 by 나무위키 구조체를 이용하면 기본 타입(int, char) 외에도 다양한 자료형(객체)를 표현할 수 있다 구조체와 배열, 클래스의 차이점 구조체와 배열의 차이점 구조체 : 여러 자료형의 집합 배열 : 같은 자료형의 집합 C언어의 구조체와 다른 언어의 구조체, 클래스의 차이점 C언어에는 구조체만 있지만, C++와 같이 구조체와 클래스를 동시에 제공하는 언어도 존재한다 하지만 C와 C++이 제공하는 구조체와 클래스에는당연하게도차이점이 존재한다 구조체(C) : 내부에 자료형만 사용 가능, 접근 지정자나 함수는 사용 불가 구조체(C++) : 내부에 자료형 외에도 함수나 접근 지정자도 사용 가능 ..
함수 포인터 C언어 프로그램의 모든 함수는 내부적으로 포인터의 형태로 관리할 수 있다 함수 이름은 주소값을 반환한다 #include void function() { printf("It's my function."); } int main(void) { printf("%d\n", function); //-1202383931, 함수의 주소값 system("pause"); return 0; } 함수 포인터는 특정한 함수의 반환 자료형을 지정하는 방식으로 선언 가능하다 반환 자료형 (*이름)(매개변수) = 함수명; 함수 포인터를 이용하면 형태가 같은, 서로 다른 기능의 함수를 선택적으로 사용 가능하다 즉 형태가 같은 여러 개의 함수를 같은 명령어로 호출 가능하다 함수 포인터의 형태 및 예시 매개변수 및 반환 자..
동적 메모리 할당의 개념 일반적으로 C언어에서는 배열의 경우 사전에 적절한 크기만큼 할당해주어야 한다 우리가 원하는 만큼만 메모리를 할당해서 사용하고자 하면 동적 메모리 할당을 사용해야 한다 ※동적 : 프로그램 실행 도중이라는 의미 동적 메모리 할당 함수 C언어에서는 malloc() 함수를 이용하여 메모리 공간을 확보 가능하다 ※메모리 공간 확보(memory allocation) malloc() 함수는 메모리 할당에 성공하면 주소를 반환하고, 그렇지 않으면 NULL을 반환한다 ※여기서 주소값은 컴퓨터의 메인 메모리(RAM)의 주소값을 말함 malloc() 함수는 라이브러리에 정의되어 있다 malloc(할당하고자 하는 바이트 크기); 동적 메모리 할당 함수의 특징 동적 메모리 할당을 수행할 때마다 할당되..
2차원 배열의 필요성 행렬 데이터를 표현할 때 그래프 알고리즘을 처리할 때 다수의 실생활 데이터를 처리할 때 등등 2차원 배열의 특징 2차원 배열은 표(Table) 구조와 흡사하다 C언어에서 2차원 배열은 []를 두 번 연속해서 선언한다 //자료형 배열 이름[행][렬] = { {값, 값, 값, ...}, {값, 값, 값, ... } } int a[10][10]; 1차원 배열과 마찬가지로 0인덱스부터 시작한다 ※a[0][0], ... a[n][n]은 (n+1) x (n+1) 행렬 행과 열을 사용한다는 특성으로 2중 FOR문과 함께 사용되는 경우가 많다 #include //행 ⇒ 열의 순서 int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int main(void) ..
프로그램 메모리 주소 프로그램이 실행되기 위해서는 메모리에 적재(Lord)되어야 한다 즉 프로그램의 크기를 충당할 수 있을 만큼의 메모리 공간이 필요하다 일반적인 컴퓨터 OS(운영체제)는 메모리 공간을 이하의 4가지로 구분하여 관리한다 코드 영역 데이터 영역 힙 영역 스택 영역 소스 코드 전역 변수 정적 변수 동적 할당 변수 지역 변수 매개 변수 코드 영역 : 한 줄 한 줄 실행시킬 수 있는 소스 코드 데이터 영역 : 전역 변수, 정적 변수를 담고 있는 영역 힙 영역 : 동적 할당 변수를 담는 영역 스택 영역 : 함수마다 포함되어 있는 지역 변수, 매개 변수를 담는 영역 전역 변수(Global Variable) 프로그램의 어디서든 접근 가능한 변수 메모리의 데이터 영역에 적재된다 main 함수가 실행되기..
문자열의 개념 문자열 = 문자들의 배열 컴퓨터 메모리 구조상 마지막에 NULL(\0)값을 포함한다 NULL값은 문자열의 끝을 알리는 목적으로 사용 printf() 함수를 실행하면 컴퓨터는 내부적으로 NULL값이 나올 때까지 출력을 반복함 문자열과 포인터 문자열 형태의 포인터를 사용하면 특정 문자열의 주소를 넣게 된다 #include int main(void) { char *a = "Hello World"; //문자열 리터럴 : 배열이 아닌 ""에 문자열이 들어간 구조 printf("%s\n", a); //문자열 리터럴(상수)의 값 printf("%p\n", &a); //포인트 변수 a의 값 system("pause"); return 0; } 문자열을 문자열 리터럴로 선언을 하면, 문자열 리터럴은 상수로서..
아스키 코드 C언어의 문자는 아스키 코드(Ascii Code)를 따른다. 아스키 코드는 0~127중의 1바이트로 구성되어 있다. 대표적인 아스키 코드의 예시 0 48 A 65 a 97 #pragma region "아스키 코드" #include int main(void) { char zero = 48; char cSmallA = 65; char cCapitalA = 97; printf("%c\n", zero); printf("%c\n", cSmallA); printf("%c\n", cCapitalA); system("pause"); return 0; } #pragma endregion 문자의 입출력 getchar() 함수 단 하나의 문자를 입력받는 함수 버퍼에 데이터가 있을 때는 버퍼 가장 앞의 데이터를 ..
포인터의 개념 변수는 기본적으로 자신의 자료형에 맞는 값을 저장한다 하지만 포인터(Pointer) 변수는 특수한 변수로, 메모리 주소를 저장한다. (단순히 메모리 주소를 저장할 때, 어떤 자료형의 주소값인지를 함께 저장한다) 포인터 변수를 선언할 시에는 포인터 변수임을 알려주기 위해, 변수명 앞에 *를 붙인다. 예시) int *b = &a; 선언 이후 포인터 변수를 사용하게 되면, 포인터 변수가 가리키는 주소의 값을 반환한다. 포인터 관련 연산자 주소 연산자(&) 변수 앞에 붙어서 변수의 메모리 시작 주소 값을 구합니다. 포인터(*) 포인터 변수를 선언할 때 사용합니다. 간접 참조 연산자(*) 선언된 포인터 변수가 가리키는 변수를 구합니다. #include int main(void) { int a = 1..
배열을 사용하는 이유 ⇒ 동일한 성격의 데이터를 다수 표현하기 위해 배열의 원소 중에서 최댓값 찾기 #include #include //자료형들의 최솟값이나 최댓값을 포함한 라이브러리 #pragma region "배열의 원소 중에서 최댓값 찾기" int main(void) { //int a[10] = { 0, }; //배열 전체를 0으로 초기화 int a[10] = { 6, 5, 4, 3, 9, 8, 0, 1, 2, 7 }; int i; int maxValuse = INT_MIN; for (i = 0; i maxValuse) { maxValuse = a[i]; } } printf("%d\n", maxValuse); system("pause"); return 0;..
사칙연산 함수 만들기 #include void calculator(int a, int b) { printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d * %d = %d\n", a, b, a * b); printf("%d / %d = %d\n", a, b, a / b); printf("\n"); } int main(void) { calculator(5, 10); calculator(7, 7); calculator(9, 12); system("pause"); return 0; } 재귀 함수 재귀 함수란 자기 자신을 포함하는 함수이다. 기본적으로 자기 자신을 계속 불러내기 때문에 반드시 재귀 종료 조건이 필..