목록MENU (206)
Prosto
프로그램을 만들 때, 난수를 발생 시키는 경우가 종종 있습니다. 이럴 때 사용할 수 있도록 만들어진 함수가 있습니다. #include // C #include // C++ 에 있는 rand() //seed 값에 따라 난수 발생. (똑같은 상황엔 항상 같은 난수가 나옵니다.) 그러한 것에 대비해 srand()함수로 seed 값을 잡아줄 수 있습니다. srand(time(null))일 경우 현재 시간을 기준으로 시드값을 만들 수 있습니다. (매번 바뀌게 됨.) 단 time 함수를 사용하기 위해선 time.h를 include 해주어야 합니다. 예를 들면, srand((unsigned)time(NULL)); std::cout
이번에는 C++의 큰 장점 중 하나인 이름공간입니다. 혼자가 아닌 여럿이 모여 개발하는 경우가 대부분인데, 이러한 경우 매우 좋습니다. 예를 들어 A, B, C 세 사람이 모여 개발하는 경우, 모두가 같은 이름의 함수를 사용했을 때 충돌이 발생될 수 있습니다. 그렇게 될 경우 엄청난 시간싸움이 될 수도 있죠.. (여기 고치고, 저기 고치고...) 그런 경우에 매우 도움이 되는 것이 바로 namespace 입니다. 셋 모두 Function()이라는 함수가 있을 경우 A의 Function(), B의 Function(), C의 Function() .. 과 같이 각자이름을 붙여 사용되는 것입니다. namespace 이름공간명. { .. } namespace Prosto { void func() {...} } 이..
인라인 함수 공부에 앞서 C의 매크로 함수에 대한 어느정도의 지식이 필요합니다. (매크로 함수의 장점, 단점.. 매크로 함수의 기능 ....) 간단하게 말하면, C의 매크로 함수는 함수 정의를 사용한 경우와 다르게 간단하게 처리를 하여, 성능의 향상을 주는 장점이 있고, 단점으로는 디버깅의 어려움, 함수 정의 방식이 일반함수에 비하여 더 복잡하다는 것이죠. 간단한 코드. #define SQUARE(X) ((X)*(X)) int main(void) { printf("%d \n", SQUARE(5)); return 0; } 위 코드에서 SQUARE(5)가 들어간 자리는 ((5)*(5))로 치환되어 실행됩니다. 인라인 함수는 그러한 매크로 함수의 장점을 이용하여 프로그램의 성능 향상을 위하여 새로 도입된 키워..
C++에서는 매개변수의 디폴트 값을 줄 수 있습니다. int Func(int num=10) { ... } 이라는 함수가 정의되어 있을 경우. main 함수에서 이 함수를 사용할 때 int main() { ... Func(); Func(10); ... } 인자를 전달 하지 않아도, num=10이라는 값을 디폴트 값으로 전달 받도록 합니다. 그러므로, 위의 Func();와 Func(10);은 같은 의미를 가지게 됩니다. 같은 의미로 int Func(int num=10, int num2=20) { ... } 이라는 함수가 정의되어 있을 경우. main 함수에서 이 함수를 사용할 때 int main() { ... Func(); Func(10); Func(10, 20); ... } 인자를 전달 하지 않아도, nu..
C++에서는 C와 다르게 함수 오버로딩이 가능합니다. (같은 이름의 함수를 재정의하고 사용할 수 있습니다.) 이는 int Func() {} int Func(int a) {} int Func(int a, int b) {} int Func(char a) {} 와 같은 형식이 가능한 것입니다. (이름은 같지만 매개 변수형이나 인수 갯수가 다른 함수.) C에서는 컴파일에러가 발생되겠지만, C++에서는 정상적으로 실행됩니다. 그 이유는 C에서와 다르게 C++에서는 함수를 (이름 + 전달인자)로 확인하기 때문입니다. 하지만, int Func() {} void Func() {} 와 같이 반환형만이 다른경우는 불가능합니다. (이름과 전달인자로 확인하고 사용되기 때문.)
전에 C programing을 공부하고, 이제 C++ 공부를 시작했습니다. C는 절차 지향 언어인 반면, C++은 객체 지향 언어입니다. C와 비교하면 몇가지 차이점도 보입니다. 앞으로 천천히 공부해 나가기로 하겠습니다! + C++은 C에 비해서 여러측면에서 대규모 프로젝트를 하는데 적합합니다. 또, 게임을 만들 경우에도 C언어를 그대로 쓰기보다는 C++을 사용합니다. 그 이유는 공부하면서 나오겠지만, namespace라든지, 참조자라든지.. 조금만 공부하다보면 어느정도 이유를 알 수 있을 것이라 생각됩니다. 또, C를 완벽히 모르더라도 C++을 시작해도 됩니다. (저 또한 그렇고요.) C++을 공부해 나가면서 부족하다 느끼는 부분은 다시 한 번 C도 참고하고, 공부하여 부족한 부분을 체워나가며 공부하는..
포인터의 포인터.. int * ptr; 이라는 포인터가 있을 때 int ** dptr; 이라는 것도 있을 수 있습니다. 간단한 예문 #include int main(void) { int na=20; int * ptr = &na; int ** dptr = &ptr; printf("%#x \n%#x \n%#x \n\n", na, ptr, dptr); printf("%d, %d, %d", na, *ptr, **dptr); return 0; } 위에서 볼 수 있듯 na = *ptr = **dptr 결과라는 것을 알 수 있습니다. **dptr -가리킴-> *ptr -가리킴-> na dptr은 ptr의 주소를 가리키고 있고, ptr은 na의 주소를 가리키고 있습니다. 그렇기에 na = *ptr = **dptr이 된..
친구가 소개해준 덕에 오늘은 게임을 만드는 엔진 중 하나인 DarkGDK를 잠시나마 사용해 볼 수 있었습니다. 여러 시행착오를 겪은 끝에 만나 볼 수 있었습니다. (DirectX, DarkGDK... ) (다운로드 - 설치 - 설정 - 실행 ...) 예전부터 게임을 만들어보고 싶어했던 저에게는 좋은 경험이 될 것 같습니다~ (게임 프로그래밍 엔진) 그리고 소개해준 친구에게 이런 저런 설명을 듣고, 어느정도 사용법 등도 들어볼 수 있었습니다. 처음 다운로드 받아 설치하고 업데이트 시킨 후 그리고, 설정을 하고 실행하는데 문제가 나왔습니다! ... ...ㅠㅠ 먼저, 일단 기본적인 설정은 아래와 같이 해야합니다. (Visual Studio) 도구 -> 옵션 -> 프로젝트 및 솔루션 - 하위 항목인 VC++ 디..
학교 기숙사에 있다가 신발을 사러 나갔습니다~ 학교 앞쪽와 가까운 곳에 위치한 Campus에 들어가서 구경을 해봤습니다! 저는 예전부터 쭉~ 캠퍼스화만 사왔기 때문에 이제는 캠퍼스화가 아니면 좀 어색하더라구요..ㅋㅋ 캠퍼스화 괜찮은게 뭐가 있나 이리저리 둘러보니 맘에 드는게 몇 개 있더군요! 가장 먼저 눈에 들어왔던 캠퍼스화 입니다. 색상도 괜찮고 디자인도 있고 무난하게~ 좋더군요! 그리고 파란색 라인 들어간건 어떨지~ 생각해봤죠 그러다가 파란색! 파란 캠퍼스화 괜찮더라구요~ 제가 원래 무지 튀는 색상을 그렇게 선호하진 않아서...ㅠㅠ 와~ 마지막 신발 정말 맘에 들더라구요~ 색상도 괜찮고 왠지 끈 색도 와인색...ㅋㅋ 맘에 들더라구요! 그래서 이거 신어보려고 달라고 했더니(물론 다른 신도 신어 봤지만...
이제 날씨도 점점 더워지고 있습니다! ㅠㅠ 저번 주말에 청계천을 다녀왔습니다~ 정말 더웠는데 다리 밑 그늘에 들어가니 시원한 바람도 불어오고! 좋더군요~ 물론 가는 길에 버스도 완전 만원에.... 정말 힘든 여정이였지만..ㅠㅠ 도착하니, 토요일이라 그런지 청계천을 찾은 사람들이 꽤 되더군요. 하지만, 돌아다니기 힘들고 그런정도는 되지않았습니다~ 청계천은 연인과 함께 거닐기에도 괜찮고 가족과 함께, 친구와 함께 가기에도 괜찮은것 같습니다. 더위 피하기도 좋고~ 저는 먼저 도착하고 (버스에서 꽤 오랜시간을 서있었기때문에...) 바로 다리 밑 그늘로 갔습니다~ (김밥도 먹고~ 이런저런 이야기도 나누고~) 살랑 살랑 불어오는 바람이 정말 시원했습니다~ 조금 많은 사람들이 있긴 했지만 그렇게 시끄럽지도, 북적대지..