- 전체
- 게임 일반 (make game basics)
- 모바일 기획 및 디자인
- GameMaker Studio
- Unity3D
- Cocos2D
- 3D Engine OGRE
- 3D Engine irrlicht
- copperCube
- corona SDK
- Windows Basic Game
- BaaS (Mobile Backend)
- phnegap & cordova
- ionic & anguler
- parse (backend)
- firebase (backend)
- Game Backend Server / Opt
- web assembly
- Smart Makers
- pyGame & Ren'Py
- 머드(MUD) 게임 만들기
- Xamarin(자마린)
- flutter (플루터 앱 개발)
- construct 2 / 3
- pocketbase
- RPG Maker 시리즈
- godot engine
- playmaker(unity)
- react native
게임 일반 (make game basics) (CGP) 2장. 함수
2021.06.27 21:46
(CGP) 2장. 함수
|
(1) http://youtu.be/J8IQ5KNAe7o (3) http://youtu.be/Ap1ktrNdlm4 (4) http://youtu.be/AyCrARh0xQM
게임 프로그래밍에 사용되는 C 함수와 제작 함수의 사용방법을 확인하고 이해하는 내용입니다. |
01 C 표준 함수
여기서 소개하는 C 함수는 이 책에서 사용된 함수들이며 이 정도의 함수만 사용할 수 있어도 게임 프로그래밍을 하는 데는 아무 문제가 없다. 차후에 더 필요하다고 생각되는 함수가 있다면 프로그래밍 툴에서 제공하는 로컬 도움말과 MSDN 웹사이트를 통해 찾아보도록 하자.
이제 살펴볼 함수는 프로그래밍 툴에서 기본적으로 제공하는 C언어 표준 함수들이다.
물론 이미 알고 있는 함수도 있겠지만 복습 차원에서 간단히 함수의 사용방법을 소스와 함께 살펴보자.
■ 표준 입출력 함수
printf()
printf() 함수는 화면 출력에 대한 C언어 표준 출력 함수이다.
변환 문자를 통해 출력하려는 값의 출력 형식을 format에 지정해 준다.
|
포함 헤더 |
#include <stdio.h> |
|
|
함수의 원형 |
int printf( const char *format[,argument]…); |
|
|
변환 문자 |
%d |
정수형 |
|
%c |
문자형 |
|
|
%f |
실수형 |
|
|
%s |
문자열 |
|
|
%o |
8진수 |
|
|
%x |
16진수 |
|
|
%p |
메모리 주소 출력 ( 포인터(pointer) 출력 ) |
|
|
%% |
% 부호 출력 |
|
|
%u |
10진수 양수 출력 |
|
[표 2-1] printf() 함수
|
1 2 3 4 5 6 7 8 9 |
#include <stdio.h>
int main( void ) { int nVar = 7;
printf( "%d %p %s \n", nVar, &nVar, "C를 이용한 게임프로그래밍" ); return 0; } |
[소스 2-1] printf() 사용 예

[그림 2-1] 실행 결과
위의 소스 7행에서 변수의 메모리 주소를 출력할 때에는 %p를 printf()의 변환 문자로 사용하며 변수명 앞에 &(ampersand)는 변수의 메모리 주소를 의미한다.
sprintf()
sprintf() 함수는 printf()와 같은 역할을 하지만 출력을 문자열로 한다.
이때 문자열은 널문자까지 저장할 수 있는 크기여야 하며 출력 문자열은 첫 번째 매개변수에 지정한다. 이 함수는 모든 값을 문자열로 만들 때 유용하게 사용된다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int sprintf( char *buffer, const char *format [, argument] ... ); |
[표 2-2] sprintf() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdio.h>
int main(void) { int nVar = 7; float fVar = 3.14f; char string[100];
sprintf( string, "출력값 : %d %.2f", nVar, fVar ); printf( "%s\n", string ); return 0; } |
[소스 2-2] sprintf() 사용 예

[그림 2-2] sprintf()를 이용한 값 출력
scanf()
scanf() 함수는 화면으로부터 지정된 형식의 데이터를 입력 받는 함수이다.
입력 받는 형식을 지정하는 변환 문자는 printf()와 동일하다.
scanf()를 이용하여 여러 개의 데이터를 입력 받을 때는 입력되는 데이터 사이에 스페이스를 입력한다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int scanf( const char *format [,argument]… ); |
[표 2-3] scanf() 함수
|
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h>
int main( void ) { int nVar; float fVar;
scanf( "%d %f", &nVar, &fVar ); printf( "%d %.2f \n", nVar, fVar ); return 0; } |
[소스 2-3] scanf() 사용 예

[그림 2-3] scanf()를 이용한 출력
9행의 fVar을 출력하기 위한 변환 문자에 있는 .2는 소숫점 2자리수까지의 출력을 의미한다.
fflush()
fflush() 함수는 지정한 스트림(stream)을 비우는 역할을 한다.
스트림에는 표준 입력 스트림인 stdin이 있으며 이것은 키보드 버퍼와 연관되어 있다.
scanf()는 입력된 내용을 입력 스트림으로부터 값을 읽어 오는데, 만약 반복하여 scanf()로 입력을 받게 되면 scanf()에서 데이터 입력의 끝을 의미하는 개행문자( ‘\n', 10 ) 값이 키보드 버퍼로부터 읽혀지는 경우가 발생한다. 이 문제를 해결하기 위해서 scanf()를 사용한 후에는 fflush() 함수를 호출하거나 키보드 버퍼를 비우면 된다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int fflush( FILE *stream ); |
[표 2-4] fflush() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <stdio.h>
int main( void ) { char cVar; int i;
for( i = 0 ; i < 4 ; i++ ) { scanf( "%c", &cVar ); // fflush( stdin ); printf( "%d \n", cVar ); } return 0; } |
[소스 2-4] scanf()를 이용하여 연속적으로 4개의 문자를 입력 받는 소스

[그림 2-4] test 입력
[소스 2-4]를 실행하고 ‘test’ 를 입력하면 t와 e를 입력하는 도중에 종료되는 것을 알 수 있다. 이 소스는 scanf()를 통해 4번을 반복하여 입력 문자를 읽어내지만 키보드 버퍼로부터 데이터를 읽기 때문에 키보드 버퍼에 남아 있던 개행문자를 자동으로 읽어 te까지 입력되면 종료하게 된다.
[소스 2-4]의 11행에 있는 주석을 제거하고 test를 입력해 보자.
아래와 같이 정확히 입력한 4개의 문자가 출력되는 것을 알 수 있다.

[그림 2-5] fflush()를 사용한 test 입력
■ 메모리 관련 함수
malloc()
malloc() 함수는 size byte 만큼의 메모리를 할당하고 할당된 메모리의 첫 번째 메모리 주소를 리턴하는 함수이다. 리턴 데이터형이 void* 형이므로 항상 형변환을 해서 받아야 한다.
|
포함 헤더 |
<stdlib.h> 또는 <malloc.h> |
|
함수의 원형 |
void *malloc( size_t size ); |
[표 2-5] malloc() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h> #include <malloc.h>
int main( void ) { int *pVar;
pVar = (int*)malloc( sizeof( int )*2 ); pVar[0] = 0; // *( pVar + 0 ), *pVar pVar[1] = 2; // *( pVar + 1 ) printf( "%d %d \n", pVar[0], pVar[1] ); free( pVar ); return 0; } |
[소스 2-5] malloc() 사용 예

[그림 2-6] malloc()를 이용한 메모리 생성과 출력
8행에서 malloc() 함수는 총 8바이트의 int형 메모리를 확보한 후에 첫 번째 메모리 주소를 pVar에 저장한다. pVar은 int형 포인터로 int형 메모리 주소만을 저장하며 *와 함께 사용되면 현재 pVar에 저장된 메모리 주소로 접근한 값을 의미한다.
9행과 10행에서 포인터의 형식 대신 배열 형식을 사용한 것은 연속적인 메모리가 할당된 경우이기 때문이다. C언어에서는 배열과 포인터의 형식을 호환하여 사용할 수 있다.
이와 같은 표현법은 소스 코드의 가독성을 높여준다.
free()
free()는 할당된 메모리를 해제시켜 준다.
|
포함 헤더 |
<stdlib.h> 또는 <malloc.h> |
|
함수의 원형 |
void free( void *memblock ); |
[표 2-6] free() 함수
위의 [소스 2-5]에서 malloc()를 이용하여 할당된 메모리는 12행과 같이 free()함수를 이용하여 해제해야 한다.
memset()
memset() 함수는 count (byte 단위) 만큼을 dest에서부터 문자 c로 초기화하는 함수이다.
|
포함 헤더 |
<memory.h> 또는 <string.h> |
|
함수의 원형 |
void *memset( void *dest, int c, size_t count ); |
[표 2-7] memset() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h> #include <malloc.h>
int main( void ) { char *pVar;
pVar = (char*)malloc( sizeof( char )*2 ); memset( pVar, '*', sizeof( char )*2 ); printf( "%c %c \n", pVar[0], pVar[1] ); free( pVar );
return 0; } |
[소스 2-6] memset() 사용 예

[그림 2-7] memset()을 사용한 초기화
[소스 2-6]은 2개의 char형 변수를 ‘*’로 초기화하는 소스이다.
만약 int *pVar을 0으로 초기화하려면 memset( pVar, 0, sizeof(int)*2)와 같이 한다.
memcpy()
이 함수는 지정된 byte 만큼을 src에서 dest로 복사하는 함수이다.
|
포함 헤더 |
<memory.h> 또는 <string.h> |
|
함수의 원형 |
void *memcpy( void *dest, const void *src, size_t count ); |
[표 2-8] memcpy() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdio.h> #include <memory.h>
int main(void) { char src[] = "1234"; char dest[] = "###########";
memcpy( dest, src, 4 ); printf( "%s\n", dest ); return 0; } |
[소스 2-7] 메모리 복사

[그림 2-8] 메모리를 복사한 결과
■ 키보드 관련
_getch()
_getch() 함수는 키보드로부터 하나의 문자를 입력받지만 화면에는 출력하지 않는다.
Visual C++ 2005 이상부터는 ISO C++명명 규칙을 준수하고자 getch() 대신 _getch()를 사용한다.
|
포함 헤더 |
<conio.h> |
|
함수의 원형 |
int _getch( void ); |
[표 2-9] _getch() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> #include <conio.h>
int main( void ) { int nChar;
while( 1 ) { nChar = _getch(); if( nChar == 'q' ) break; printf( "%c", nChar ); }
return 0; } |
[소스 2-8] _getch() 사용 예

[그림 2-9] _getch()로 입력 받기
위의 소스는 _getch()로 입력 받은 후 리턴되는 아스키코드값을 문자로 출력하는 소스이다.
_getch()는 입력받은 값을 화면에 출력하지 않으므로 printf()와 같은 출력함수로 화면에 출력해야 한다. 입력 함수 중에서 _getch()와 유사한 함수명을 가지며 입력 받은 값을 출력해주는 함수로는 _getche()가 있다.
12행의 break는 입력값이 q일 때 8행의 while문을 종료하게 한다.
_kbhit()
_kbhit() 함수는 현재 눌려진 키가 있는지 조사하는 함수이다.
만약 눌려진 키가 있다면 0이 아닌 값을 리턴하고 그 외에는 0을 리턴한다.
Visual C++ 2005 이상부터는 ISO C++명명 규칙을 준수하고자 kbhit()대신에 _kbhit()를 사용한다.
|
포함 헤더 |
<conio.h> |
|
함수의 원형 |
int _kbhit( void ); |
[표 2-10] _kbhit() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <stdio.h> #include <conio.h>
int main( void ) { int nChar;
while( 1 ) { if( _kbhit() ) { nChar = _getch(); if( nChar == 'q' ) break; printf( "%c", nChar ); } } return 0; } |
[소스 2-9] _kbhit() 사용 예

[그림 2-10] _kbhit() 키 입력 체크
[소스 2-8]과 [소스 2-9]는 같은 결과를 출력하지만 차이점이 있다.
[소스 2-8]은 _getch()에 의해 입력이 될 때까지 대기상태가 되지만 [소스 2-9]는 _kbhit()에 의해 키 입력이 있을 때만 12행 이하를 실행한다.
■ 파일 입출력 함수
fopen()
fopen() 함수는 파일의 개방 형태를 텍스트 모드로 사용할 것인지 아니면 이진 모드로 사용할 것인지를 설정하며 사용하려는 파일의 용도에 따라 쓰기용, 읽기용 혹은 추가용으로 사용하게 된다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
FILE *fopen( const char *filename, const char *mode ); |
[표 2-11] fopen() 함수
mode는 아래 [표 2-12]의 입출력 모드와 파일 접근 모드를 결합하여 사용한다.
기본 입출력 모드는 텍스트 모드이므로 이진 파일 모드로 하려면 b와 함께 [표 2-13] 형식으로 조합하여 설정한다.
|
구분 |
mode |
설명 |
|
입출력모드 |
t |
텍스트 파일 모드로 파일을 연다. |
|
b |
이진 파일 모드로 파일을 연다. |
|
|
파일 접근 모드 |
r |
파일 읽기 |
|
w |
파일 쓰기 옵션이며 파일이 존재하지 않을 때는 새로운 파일을 생성한다. 만약 쓰고자 하는 파일이 존재할 때에는 덮어쓰기를 한다. |
|
|
a |
w 옵션과 비슷하지만 파일이 존재할 때는 기존 데이터에 내용을 추가한다. |
|
|
r+ |
파일이 존재하는 경우에만 파일 읽기와 쓰기를 하며 파일이 존재하지 않을 경우는 NULL을 리턴 한다. 단, 기존 파일에 쓰기를 하면 덮어쓰기를 하므로 기존 내용은 전부 지워진다. r+가 w+와의 차이점은 r+은 새로운 파일을 생성하지 못한다는 점이다. |
|
|
w+ |
파일 읽기와 쓰기를 하며 파일이 존재하면 덮어 쓰기를 하므로 기존 내용은 전부 지워진다. 파일이 없는 경우에는 새로운 파일을 생성한다. |
|
|
a+ |
파일 읽기와 쓰기를 하며 파일이 존재하면 기존 데이터에 내용을 추가한다. 그리고 파일이 없는 경우에는 파일을 새로이 생성한다. |
[표 2-12] 파일 접근 모드와 입출력 모드
|
파일 접근 모드 + 입출력 모드 |
[표 2-13] 파일 개방 모드의 조합 순서
예를 들어 텍스트 파일이면서 읽기와 쓰기가 가능하도록 할 때는 r+ 또는 r+t 로 mode에 설정한다.
fclose()
fclose() 함수는 fopen()을 통해 개방한 파일의 사용을 종료하게 한다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int fclose( FILE *stream ); |
[표 2-14] fclose() 함수
fprintf()
데이터를 변환문자의 형식에 따라 파일에 출력하는 함수이다.
변환문자는 printf() 함수와 동일한 형식을 사용한다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int fprintf( FILE *stream, const char *format [,argument ]...); |
[표 2-15] fprintf() 함수
|
1 2 3 4 5 6 7 8 9 10 |
#include <stdio.h>
int main( void ) { FILE *fp; fp = fopen( "test.txt", "w" ); fprintf( fp, "%s", "test" ); fclose( fp ); return 0; } |
[소스 2-10] fprintf()를 이용한 파일 출력

[그림 2-11] 저장된 내용
fscanf()
fscanf()는 fprintf()의 반대로 변수값을 파일로부터 변환문자 형식에 의해 읽어낸다.
사용 방법은 scanf()와 동일한 형식을 사용한다.
|
포함 헤더 |
<stdio.h> |
|
함수의 원형 |
int fscanf( FILE *stream, const char *format [,argument ]... ); |
[표 2-16] fscanf() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h>
int main( void ) { FILE *fp; char str[10];
fp = fopen( "test.txt", "r" ); fscanf( fp, "%s", str ); fclose( fp );
printf( "%s\n", str ); return 0; } |
[소스 2-11] fscanf()를 이용한 파일 입력

[그림 2-12] 저장된 내용을 읽어서 출력
[소스 2-11]은 [소스 2-10]에서 저장한 test.txt 파일의 내용을 fscanf()로 읽어 화면에 출력하는 소스이다.
[소스 2-11]과 같이 문자열을 읽을 때에는 널문자까지를 저장할 수 있는 충분한 메모리가 있어야 한다. 6행에 선언된 str[10]은 test.txt 내용과 널문자까지를 충분히 저장할 수 있는 변수로 선언되어 있다.
■ 시간 관련 함수
- clock()
프로그램이 실행된 이후부터 경과된 시간을 밀리세컨드(millisecond) 단위로 알려주는 함수이다. 1초는 1000 밀리세컨드이며 clock_t형은 typedef long clock_t로 재정의된 데이터형이다.
|
포함 해더 |
<time.h> |
|
함수의 원형 |
clock_t clock( void ); |
[표 2-17] clock() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdio.h> #include <time.h>
int main( void ) { while( 1 ) { system( "cls" ); printf( "초 : %d", clock() / 1000 ); } return 0; } |
[소스 2-12] clock() 함수를 이용하여 초 단위로 출력

[그림 2-13] clock()를 이용한 초 출력
clock() 함수는 밀리세컨드 단위이므로 9행의 clock() / 1000 은 밀리세컨드를 초로 환산한 다.
■ 기타
- system()
콘솔 명령어를 사용할 수 있도록 해주는 함수이다.
콘솔 명령어 중에서 ‘cls’는 콘솔창 전체 화면을 지우는 명령어이며 ‘dir’은 현재의 폴더와 파일을 콘솔창에 출력해주는 명령어이다.
|
포함 헤더 |
<process.h> 또는 <stdlib.h> |
|
함수의 원형 |
int system( const char *command ); |
[표 2-18] system() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdlib.h> #include <conio.h>
int main( void ) { system( "dir" ); _getch(); system( "cls" ); _getch();
return 0; } |
[소스 2-13] 파일과 폴더 출력후 화면 지우기

[그림 2-14] 콘솔 명령어 실행
[소스 2-13]을 실행해 보면 위의 [그림 2-14]와 같이 현재의 폴더와 파일이 출력되는 것을 볼 수 있다. 그리고 엔터키를 한 번 더 입력하면 8행의 systme( "cls" )에 의해 화면이 지워진다.
- exit()
프로그램을 종료시키는 함수이다. status 값이 0이면 정상적인 프로그램 종료 설정이며 1이면 비정상적인 프로그램 종료를 위한 설정이다.
|
포함 헤더 |
<process.h> 또는 <stdlib.h> |
|
함수의 원형 |
void exit( int status ); |
[표 2-19] exit() 함수
|
1 2 3 4 5 6 |
#include <stdlib.h>
int main( void ) { exit( 0 ); } |
[소스 2-14] exit()를 이용한 프로그램 종료 예
- srand()
난수 생성기를 초기화 시키는 함수이며 seed는 난수표상에서의 새로운 시작점을 설정한다.
|
포함 해더 |
<stdlib.h> |
|
함수의 원형 |
void srand( unsigned int seed ); |
[표 2-20] srand() 함수
- rand()
0부터 RAND_MAX(32767)까지 정수값 중에서 임의의 값을 리턴하는 함수이다. (난수 생성 함수)
|
포함 해더 |
<stdlib.h> |
|
함수의 원형 |
int rand( void ); |
[표 2-21] rand() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h> #include <time.h> #include <stdlib.h>
int main( void ) { int i;
srand( (unsigned)time( NULL ) );
for( i = 0 ; i < 5 ; i++ ) { printf( "%d \n", rand() ); } return 0; } |
[소스 2-15] 5개의 난수 발생

[그림 2-15] 난수 출력
- _toupper()
알파벳 소문자를 대문자로 변환하는 함수이다.
|
포함 해더 |
<ctype.h> |
|
함수의 원형 |
int _toupper( int c ) |
[표 2-22] _toupper() 함수
|
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h> #include <ctype.h>
int main( void ) { char nYN = 'y';
nYN = toupper( nYN ); printf( "%c", nYN ); return 0; } |
[소스 2-16] 소문자를 대문자로 변환

[그림 2-16] 문자 변환
02 제작 함수
C 표준 함수는 앞에서 설명한 것 외에도 상당히 많이 있지만 현재 제공되지 않는 함수도 많이 있다. 특히 그래픽에 관련된 함수는 전혀 제공되지 않기 때문에 게임 프로그래밍을 하기 위한 우리에게는 치명적이지 않을 수 없다.
이 점을 극복하기 위해서 이 책에서는 윈도우 프로그래밍에 사용하는 Win32 API 함수를 일부 가져와 용도에 맞는 그래픽 함수 등으로 제작하여 사용하고 있다.
그리고 Win32 API 함수와 C 함수간의 이질감을 최소화하기 위해서 함수명을 C 함수 형식으로 명명하여 사용하고 있다. 간혹 Win32 API 함수를 그대로 사용하는 경우가 있는데 이것은 단일 함수로써 사용되는 경우만 그렇다.
앞으로 제작하게 될 게임에 사용된 함수를 살펴보면서 원리를 이해하기 보다는 사용 방법에 집중하여 살펴보자.
■ gotoxy()
gotoxy() 함수는 커서를 (x, y) 좌표로 이동시켜 준다.
콘솔창의 화면은 가로 80 컬럼과 세로 25컬럼의 크기를 가지며 좌표로는 (0, 0)에서부터 (79, 24)까지의 좌표를 가진다.
|
포함 헤더 |
<windows.h> |
|
함수의 원형 |
void gotoxy( int x, int y ) |
[표 2-23] gotoxy() 함수
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> #include <conio.h> #include <windows.h>
void gotoxy( int x, int y ) { COORD CursorPosition = { x, y }; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), CursorPosition ); }
int main( void ) { gotoxy( 5, 5 ); printf( "C를 이용한 게임프로그래밍\n" ); _getch(); return 0; } |
[소스 2-17] 화면 좌표 (5, 5) 에 문자열 출력

[그림 2-17] gotoxy()를 이용한 커서 이동
■ Sleep()
Sleep() 함수는 지정된 밀리세컨드 동안 프로그램 실행을 일시적으로 정지시킨다.
|
포함 헤더 |
<windows.h> |
|
함수의 원형 |
void Sleep( DWORD dwMilliseconds ); |
[표 2-24] Sleep() 함수
예를 들어 3초 동안 프로그램을 일시 정지하려면 dwMilliseconds 에 3000을 설정하면 된다. 위의 함수를 C 표준 함수로 동일한 기능을 하도록 함수를 만들면 아래와 같다.
|
1 2 3 4 5 6 |
void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; } |
[소스 2-18] C 표준 함수로 제작한 대기 함수
03 헝가리언 표기법
오늘날 대부분의 프로그래머들이 변수명과 함수명을 헝가리언 표기법으로 사용하는 경향이 있다. 헝가리언 표기법은 윈도우즈 프로그래밍에서 변수명과 함수명을 정하는 방식이다.
이 방식은 긴 변수명과 함수명을 표현할 때 단어의 첫 문자는 대문자로 사용하고 단어와 단어를 연결하여 함수명과 변수명으로 사용하는 방식이다.
예를 들어 set_velocity()에 이 방식을 적용하면 SetVelocity()가 된다.
특히 변수명의 맨 앞에는 접두사를 두어 변수명만으로 데이터형을 쉽게 알 수 있도록 한다.
이 표기법은 사용자의 선택이지만 이 책의 대부분은 이와 같은 표기법을 이용하여 변수명과 함수명을 사용하고 있다.
아래의 [표 2-25]은 주로 많이 사용되는 접두사이다.
|
접두사 |
데이터형 |
예 |
|
c, ch |
char |
char cVar; |
|
n |
short 또는 int |
int nNum; |
|
i |
int |
int iNum; |
|
p |
포인터 |
char *pPtr; |
|
a |
배열 |
int aArray[10]; |
|
s, str |
문자열 |
char sString[20], strName[30]; |
[표 2-25] 변수명에 사용되는 접두사
강의가 도움이 되셨습니까? 손가락 꾸욱 눌러주는 센스 ~~
[출처] https://nowcampus.tistory.com/entry/2%EC%9E%A5-%ED%95%A8%EC%88%98?category=655340
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 6 | [TextMode Game Create] Text based game | 졸리운_곰 | 2024.08.25 | 519 |
| 5 |
무작정 배우는 C언어 머드(MUD)게임 만들기 Part5 게임스랩
| 졸리운_곰 | 2020.10.17 | 723 |
| 4 |
무작정 배우는 C언어 머드(MUD)게임 만들기 Part4 게임스랩
| 졸리운_곰 | 2020.10.17 | 563 |
| 3 |
무작정 배우는 C언어 머드(MUD)게임 만들기 Part3 게임스랩
| 졸리운_곰 | 2020.10.17 | 1020 |
| 2 |
무작정 배우는 C언어 머드(MUD)게임 만들기 Part2 게임스랩
| 졸리운_곰 | 2020.10.17 | 1236 |
| 1 |
무작정 배우는 C언어 머드(MUD)게임만들기 Part1 게임스랩
| 졸리운_곰 | 2020.10.17 | 5646 |
유튜브 동영상 강의 주소
