본문 바로가기

예전

(133)
[C++] static_cast static_cast는 C 언어의 casting 처럼 만능은 아니지만, 여러 용도가 있다. 1. float-int, int-열거형 등 기본 데이터 타입간의 변환 int i;double d;i = static_cast(d); 2. 상속관계의 클래스 계층 간의 변환 3. void*를 다른 타입의 포인터로 변환 (참고) void*는 흔히 주소를 저장하는 용도로 쓰인다.int i = 400;void* pv = &i;int* pi = (int*)pv; 4. 서로 다른 타입의 포인터 사이에 타입 변환은 할 수 없다. 서로 다른 타입의 형변환의 경우 reinterpret_cast를 사용하는 것보다는 void*를 사용해 경유하는 방식을 추천한다. [예제 1]#include int main(void) { intnValu..
[C++] casting 연산자 이래서 공부 는 진작진작 해야하는 건데, http://www.iamcorean.net/128 정리가 잘되있어서 퍼왔다. 1. 문제 상황 C 컴파일러는 내맘대로 casting이 가능합니다. 혹자는 장점이라고 합니다만... 한편으로는 개발자의 실수를 그대로 용납한기 때문에 실은 아주 무책임한 컴파일러가 아닐수 없는 것이지요. 1: void main() 2: { 3: char *str="korea"; 4: int *pi; 5: char *pc; 6: pi=(int *)str; 7: pc=(char *)*pi; 8: printf("%s\n",pc); 9: getchar(); 10:} 위의 코드에서 문제점을 찾거나 동작을 예측하실 수 있으신가요? 오~ 대단하시네요. 제가 돌려보니 죽습니다. 이유는 무분별한 포인터..
[C언어] const volatile const - const 선언시 값을 할당할 수 있다. 선언이 끝난 const 변수는 값을 변경할 수 없다. volatile - 변수가 보통 procedure 이외에 변경될수 있는 경우에 사용한다.reload시 register나 cache가 아닌 memory 에서 값을 가져오라고 compiler에게 알려준다. volatile은 비휘발성의 라는 뜻이다.- 다른 process나 HW interrupt 에 의해 값이 변경될 수 있다. [예제 1] const vaolatile int nValue = 1; 현재 process 에 의해서는 변경될 수 없지만, 다른 process나 HW interrupt에 의해서는 값이 변경될 수 있다는 뜻이다. [참조] http://blog.naver.com/codeoptima/1..
extern extern 은 다른 파일에서 변수를 공유해서 쓰기위해 있는 키워드이다. 변수는 명시하되, 그것이 선언을 의미하는 것은 아니다. 즉, 메모리를 잡지않는다. 그 변수에 대한 메모리는 다른 파일에서 그 변수를 선언했을 때 잡힐 것이다. 참고로, extern 을 무분별하게 사용한다면,변수 이름의 충돌과, 공유 자원에 대한 잘못된 접근을 일으켜 프로그램 파일 또는 함수의 독립성을 떨어트린다.
template http://ifyouprogrammer.tistory.com/59 template에 대해 잘 정리되어 있다. 한번 읽어보기
배열 포인터, 포인터 배열 배열 포인터, 포인터 배열이건 아무리봐도 헷갈려 미추어버리겠어 - 포인터 배열 : 포인터들을 집합으로 하는 배열 ( 배열 속성 ) int *p[3]; 은 이렇게 생겼다.위 식은 int 형 포인터 3개를 저장할 수 있는 배열의 의미한다. #include int main(void) { char* str[3] = {"aaaa","bbbb","cccc"}; printf("%s %s %s\n",str[0],str[1],str[2]); return 0; } 포인터 배열은 "포인터를 배열로 묶어둔 것" 으로 포인터를 배열의 용도로 쓸 때 사용한다. - 배열 포인터 : 배열을 가리키는 포인터 (주소) int (*p)[3]; 위 식은 열의 크기가 3인 2차원 배열의 시작 주소를 가리키는 포인터 하나를 의미한다. 포인터 ..
... OpenGL ES 검색하다가 발견 ... 이래서 OpenGL ES 를 해야하는구나 ㅇㅅㅇ ..... http://jinson.tistory.com/65 http://www.gamedevforever.com/94 맨 마지막 것은 D3D에 익숙한 개발자을 위한 OpenGLES 개발 소개
플레이어 따라다니는 카메라 D3DXVECTOR3 vLookAt = m_pCube->vPos;m_pMainCam->SetLookAtVec(vLookAt); D3DXVECTOR3 vDist = D3DXVECTOR3(0.0f,3.0f,-10.0f);float fDist = D3DXVec3Length(&vDist); D3DXMATRIXA16 matRotCam;D3DXVECTOR3vRotCam(0,0,-1); D3DXVECTOR3 vDir; // 회전 변환을 먹이고,D3DXMatrixRotationY(&matRotCam,m_pCube->vRot.y);// 변환 먹인 것에 방향을 입힌다.// Coord를 사용해 점을 이동시켜 벡터를 회전한다.D3DXVec3TransformCoord(&vDir,&vRotCam,&matRotY);// 정규화 한..