프로그래밍/C언어 스피비 2011. 3. 10. 11:28
필자는 그동안 패턴/객체지향 등의 화려한 기술등의 매료되어 많은 시간을 보내 왔는데 최근 취업때문에 기술 시험을보게 되었는데 가장 기초적인 클래스의 사이즈에 대해 문제가 나왔는데 그 동안 알고 있다고 대충 넘어 갔던 부분에서 문제를 틀리게 적었다. 이 때문에 기초 지식의 강화의 필요성을 느끼고 우선 클래스의 모체가 되는 구조체와 메모리 상의 관계를 공부하고 정리하고자 해당 글을 올리게 되었다. 현재 대중적인 운영체제인 Windows XP는 32bit 체계이다. 물론 64bit버전도 있지만 대부분 32bit버전을 많이 사용한다. 그 이유는 호환성에서 문제가 생기기 때문인데 그 이유가 무엇일까? 대부분의 16bit 와 32bit processor들은 word(2byte) 와 long word(4byte)가 ..
프로그래밍/C언어 스피비 2011. 3. 9. 16:04
둘 다 뒤쪽에 강세를 두고 읽으면 실체를 파악하는데 다소 도움이 될 것이다. 포인터 배열은 결국은 배열이고 배열 포인터는 결국은 포인터이다. ex) 포인터배열 =>배열이다. 1. 포인터 배열 => 포인터를 여러개 가지고 있는 배열. char* ptr[5]; 2.배열 포인터 =>배열을 가르키는 포인터. ex) char (*ptr)[5]; 3.함수 포인터 =>함수를 가르키는 포인터. char (*ptr)(int,int);
프로그래밍/C언어 스피비 2011. 3. 9. 15:52
포인터 연산 포인터 연산이란 피연산자 중의 하나가 포인터인 연산이다. pi++과 같이 포인터형 변수에 대한 연산, pi1-pi2같이 포인터끼리의 연산이나 ar-pi, pi+3같이 포인터 변수나 포인터 상수가 피연산자 중에 하나라도 있으면 이런 연산을 포인터 연산이라고 한다. 포인터라는 타입이 정수나 실수같은 수치들과는 다른 독특한 타입이기 때문에 포인터 연산도 일반적인 산술 연산과는 다른 규칙이 적용된다. 이 규칙들을 잘 숙지하고 있어야 포인터를 자유 자재로 다룰 수 있다. 규칙이 좀 많기는 하지만 지극히 상식적인 내용들이기 때문에 이해하기 어렵지 않으며 한 번만 이해해 두면 실무에 적용하는데 큰 혼란은 없을 것이다. 중요한 내용이지만 생각보다 쉬우므로 가벼운 마음으로 읽어보면 된다. 포인터끼리 더할 수..
프로그래밍/C언어 스피비 2011. 3. 9. 15:44
*ptr++ 라는 소스를 많이 찾아볼 수 있다. 살짝 해석해보면 값을 읽어들이고, 연산이 마친후 다음위치로 이동(타입크기만큼) ex1) for(int i = 0; i < 5; i++) { printf("%d", *ptr); ptr++; } ex2) for(int i = 0; i < 5; i++) { printf("%d", *ptr++); } ex1)코드가 ex2)로 한줄로 표현이 가능하다. 처음에 보기엔 불편할지 몰라도 쓰다보면 아주 강력한 유혹을 준다는 ㅋㅋㅋ
프로그래밍/C언어 스피비 2011. 3. 9. 15:31
9-3. 배열의 활용 1.불규칙한 정보의 저장 2.재사용할 정보 저장 3.작업 결과 저장 4.룩업 테이블 5. 미리 계산된 값 9-3-가.불규칙한 정보배열의 기본적인 용도는 동일한 타입의 집합적인 정보를 다루는 것인데 아주 간단한 구조이지만 활용 용도는 헤아릴 수 없을 정도로 많다. 이 절에서는 배열로 할 수 있는 전형적인 몇 가지 기법에 대해 요약적으로 알아보기로 한다. 다음 예제는 2차원 배열을 사용하여 문자 'C'로 큼직하게 C문자를 써 본다. 예 제 : ArrayC #include void main() { int i; int arPos[40][2]={ {48,6},{47,5},{46,4},{45,4},{44,3},{43,3},{42,3}, {41,3},{40,3},{40,3},{39,4},{38,..