본문 바로가기

Programming399

구조체를 포함하는 구조체 중첩된 구조체의 정의#include struct point {int x;int y;}; struct circle {struct point p;double radius;}; int main(){struct circle c1 = { 10, 10, 1.5 };struct circle c2 = { {30, 30}, 2.4 }; printf("[circle]\n");printf("x:%d, y:%d\n", c1.p.x, c1.p.y);printf("radius:%f \n", c1.radius); printf("[circle2]\n");printf("x:%d, y:%d\n", c2.p.x, c2.p.y);printf("radius:%f\n", c2.radius); return 0;} 구조체란 하나 이상의 변수를 그.. 2017. 7. 27.
구조체와 사용자 정의 자료형2 구조체를 보다 쉽게 용이하게 사용하는 방법에 대해 이야기하겠습니다. 더욱이 구조체 이외의 사용자 정의 자료형에 대해서도 이야기 하겠습니다. 구조체 변수의 전달과 리턴함수 호출 시 구조체 변수를 인자로 전달하거나 리턴하는 과정에서 일어나는 모든 일은 기본 자료형 변수와 완전히 동일합니다. 구조체 변수를 함수 호출 시 전달하는 방법은 일반 변수를 전달하는 방법과 마찬가지로 두 가지 입니다. 값에 의한 전달과 레퍼런스에 의한 전달입니다. #include struct simple {int data1;int data2;}; void show(struct simple ts);void swap(struct simple* ps); int main(){struct simple s = { 1,2 }; show(s);swa.. 2017. 7. 26.
구조체와 사용자 정의 자료형 구조체란 무엇인가요?구조체란 하나 이상의 변수를 그룹 지어서 새로운 자료형을 저의하는 것입니다. 그룹 지어진 변수들은 서로 다른 자료형의 변수라 할지라도 상관이 없으며, 포인터 변수나 배열도 그룹에 속할 수 있습니다. 예제를 통해서 살펴본 내용을 정리하도록 하겠습니다. 이 예제에서는 사용자로부터 두 점의 위치를 입력받아서, 두 점 사이의 거리를 계산하여 그 결과를 출력해 줍니다. #include #include struct point {int x;int y;}; int main(void){struct point p1, p2;double distance; fputs("Fisrt point x, y : ", stdout);scanf_s("%d %d", &p1.x, &p1.y); fputs("Second po.. 2017. 7. 26.
메모리 관리와 동적 할당 프로그램을 실행시키기 위해서 메모리 공간이 필요하다. 지역 변수나 전역 변수를 선언하기 위해서도 메모리 공간이 필요하다. 그래서 운영체제는 본인이 실행시킨 프로그램의 실행을 위해서 메모리 공간을 할당해 준다. 이렇게 해서 할당되는 메모리 공간은 크게 스택, 힙 그리고 데이터 영역으로 나뉘어 진다. 할당 시기는 프로그램이 실행될 때마다 이며, 할당 장소는 메인 메모리이다. (여기서 말하는 메인 모메리는 RAM을 의미함) 할당 용도는 프로그램 실행 시 필요한 메모리 공간의 할당을 위함이다. 데이터 영역은 전역 변수와 static 변수가 할당되는 영역이다. 이 영역에 할당되는 변수들은 일반적으로 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸된다. 즉, 데이터 영역에 할당된 변수는 프.. 2017. 7. 24.
파일의 끝을 확인해용 파일의 끝을 확인하는 방법은 두 가지가 있습니다. 리턴 값을 참조하는 방법파일의 끝이라는 개념은 데이터를 파일에서부터 읽어 들일 떄 유용한 개념입니다. 그렇기 떄문에 파일로부터 데이터를 읽어들이는데 사용되는 함수(fgets, fgetc) 들은 파일의 끝에 도달하는 경우 정해진 값을 리턴합니다. fgetc - EOF(-1), fgets - NULL(0), fscaf - EOF(-1) #include int main(void){int state;char* pState;char str[20]; FILE * file = fopen("Test.txt", "rt"); while (1){pState = fgets(str, sizeof(str), file);if(pState == NULL)break;fputs(str,.. 2017. 7. 24.
FILE 구조체의 포인터 FILE 구조체의 포인터 이 함수는 전달된 인자를 참조해서 사용자가 요구하는 파일을 원하는 방식으로 개방시켜 주는 함수이다. 지정한 파일과의 데이터 입력, 출력을 위해 스트림을 생성하는 함수이다. 즉, 파일의 개방이나 스트림의 생성은 같은 의미를 지닌다는 뜻이다. 리텁 값은 무엇일까? 리턴 값은 FILE 이라는 구조체 변수의 포인터이다. 여기서 FILE 구조체가 어떻게 생겼는지 알 필요는 없다. 왜냐하면 FILE 구조체 변수의 멤버를 우리가 직접 조작하는 일은 없기 때문이다. 다만, FILE 구조체 변수가 어떠한 정보를 지니는지 정도만 알면 된다. 결론부터 이야기하면, FILE 구조체 변수는 개방한 파일에 대한 여러 가지 정보를 지니는 변수이다. 무슨 목적으로 사용하게 되는가? 데이터를 입력 출력 할때,.. 2017. 7. 24.
Autocad 기본 정리1 오토 캐드 기본 사항 정리 #오토캐드 #기본 명령어 #작업 순서 #보조선 #제도용지크기 #선과 글자 #이론 정리 오토캐드는 엔지니어 분야의 설계 도면을 그릴 때 사용하는 S/W입니다. 도면을 그리는 이유는 물체에 대해 정확한 형상과 수치를 파악하기 위함입니다. 따라서 그리는 사람은 도면을 명확하게 그려내는 것을 목표로 합니다. 다음으로 어떻게 하면 효율적으로 그릴 수 있을지에 대한 생각을 합니다. 오토캐드에는 수많은 명령어가 있습니다. 하지만 기본적인 몇가지 명령어로 95%이상의 도면을 그려내기에 그 기본적인 명령어만 알고 있어도 충분합니다. 기본 명령어는 line, orthogonal on, circle, offset, rim, erase, units, u, redo, ex, enter, ed, ma,.. 2017. 6. 29.
제 3각법 예제2 제 3각법 예제2 #제 3각법 제 3각법을 활용하여 투상도를 그리세요. 네 알겠습니다. 먼저 문제를 보고 입체적으로 떠올립니다. 도입부분에서 테두리, 중심선, 표제란을 그립니다. 다음으로 연습장에 연필로 정면, 우측면, 평면을 그립니다. 이때 눈금선을 표시하여 거리를 직관적으로 알 수 있도록 합니다. 이번 예제를 통해서 새로 알게 된 부분은 중앙선이 없더라도 중앙선 표시를 해주는 것이 좋다는 것입니다. 중앙선은 빠른 도형 이해를 돕기 때문입니다. 그리고 치수를 기입할 경우 많이 그린 다음에 어떻게 하면 누락을 피할 수 있을지 검토하는 것이 필요합니다. 단순하게 직렬치수기입을 할 경우에 누락할 가능성이 생깁니다. 수치 기입을 최소화하고 이해를 도울 목적이라면 참고 치수를 넣어주는 것이 정석입니다. 도면 결.. 2017. 6. 29.
제 3각법을 활용하여 투상도 그리기 중간05 예제 7번 그려보기. 익숙함을 위해서. #제 3각법 아래 도형을 제 3각법을 활용하여 도면을 그려보는 것이 문제입니다. 조건은 3가지가 주어집니다. A3용지 안에 그리기, 화살표가 가리키는 방향이 정면, 눈금 한칸당 10mm 입니다. 이 문제의 경우 정면, 평면, 우측면을 그려야 하므로 연습장에 먼저 그림을 그립니다. 이것 또한 처음부터 완벽한 것을 그리면 좋겠지만, 연습이 부족한 상태에서는 대략적인 윤곽을 그리고 다시 한번 검토하는 작업을 거치는 것이 좋습니다. 그리고 눈금의 경우을 각 도형의 변에 체크를 해주는 것이 하나의 유용한 노하우입니다. 그렇게 해서 실선, 중앙선 그리고 파선과 구분지어 거리를 직관적으로 알 수 있습니다. 이 문제도 마찬가지로 도입 부분에서 A3용지의 크기와 테두리를 .. 2017. 6. 29.
Autocad를 이용하여 투상도 그리기 오토캐드를 활용하여 예제 따라 그려보기. 익숙함을 위해서. #투상도 그리기 아래 그림을 autocad 를 활용하여 도면에 그리기가 문제로 주어집니다. 그러면 먼저 본그림을 그리기 전에 출력선으로부터 10mm 안으로 테두리선을 그려줍니다. 그리고 A4사이즈(420*297)의 반절 크기인 210과 148.5 지점에 중심선을 그려줍니다. 마지막으로 문제에 제시된 표제란을 그려줍니다. (이번 예제의 표제란은 포함되어 있지 않았지만, 연습을 위해 다른 문제의 표제란을 따라 그렸습니다.) 이제 본 도형으로 들어와서 어떻게 그리면 정확하고 쉽게 그릴 수 있을지 생각을 합니다. 기본적으로 큰 부분부터 작은 부분으로 그려나가는 것이 전형적인 방법입니다. 처음 문제를 보았을 때 한 번에 많은 정보들에 노출되기에 혼동되기 .. 2017. 6. 29.