본문 바로가기

[OpenGL] 그래픽스 자유곡선 그리기 #include #include #include #define TRUE 1 #define FALSE 0 GLint TopLeftX, TopLeftY, BottomRightX, BottomRightY; //마우스의 좌표값을 저장하는 변수 GLfloat R = 0.0, G = 0.0, B = 0.0; //선의 색상 정할 때 이용되는 변수 GLboolean Line = TRUE; //TRUE로 설정을 해서 처음 실행하면 직선을 그린다. bool identify = TRUE; //마우스를 누르고있으면 false, 안누르면 true. false일 때 자유곡선을 그린다. bool click = TRUE; // 화면 초기화 안되게 막아주는 변수 void MyDisplay() { if(click == TRUE) // .. 더보기
초기화되지 않은 변수에 쓰레기값이 들어있는 이유 동아리방에서 이런 얘기가 오고가서 글을 올려봅니다. printf로 초기화되지 않은 a의 값을 출력하는데 "쓰레기값이 왜 들어있는거에요?" 이건 printf 이전에 메모리할당으로 넘어갑니다. 변수를 선언하기 이전의 메모리 모습입니다. 여기엔 이상한 값들이 들어가있어요. int형 a 변수를 선언했을 때의 메모리 모습입니다. 처음 a 변수를 선언했을 시, a의 앞으로 4바이트 뒤로 200바이트정도에 모두 cc값을 넣어서 스택을 할당합니다. 이 cc가 흔히 말하는 쓰레기값이죠. 보는 바와 같이 a 변수에 4를 초기화시켜서 a엔 4, 그 위로는 b의 값인 5가 들어갑니다. 나머지 cc cc cc cc, cc cc cc cc, cc cc cc cc 는 초기화되지 않은 변수 c, d, e로 들어가게 되는거죠. 결론은.. 더보기
4. sha == sha[0] == &sha[0][0] 3. 배열포인터에서 int sha[3][2]; int (*psha)[2]; psha = sha일 때 배열 sha는 배열의 첫번째 주소를 가리킨다고 했었습니다. 그렇다면 sha == sha[0] == &sha[0][0] 이건 맞는 문장일까요? 맞는 문장이네요. 하지만 주소만 보고 정말 저 문장이 똑같다고 할 수 있을까요. sha는 전체 배열을 뜻하고 sha[0]은 0행 전체를, sha[0][0]은 [0][0] 하나를 가리키고 있습니다. 그래서 sha는 3 x 2 x 4 인 24가 나오고 sha[0]은 2 x 4 sha[0][0]은 4가 나옵니다. 이로써 sha == sha[0] == &sha[0][0] 는 가리키는 주소만 같을 뿐 완전히 다르다는 걸 알게 됬습니다. 더보기