2019/07 50

구조체 활용

#include #include struct point { int x; int y; }; void comparePoint(struct point p1, struct point p2) { if (p1.x == p2.x && p1.y == p2.y) { printf("p1과 p2와 같습니다."); } } // 이렇게 함수를 사용하는것이 더 체계적이다. // 왜냐하면 point라는 구조체 하나만 비교를 할 수있는 함수이기 때문이다. int main(void) { struct point p1, p2; p1.x = 30; p1.y = 10; p2.x = 30; p2.y = 10; /* if(p1 == p2){ printf("p1과 p2는 같습니다"); } 라는 표현이 안된다. p1과 p2자체는 비교가 안되기 때문..

C/기초 2019.07.30

구조체

C언어는 기본적으로 Java나 C++과 같은 다양한 프로그래밍 언어에 비해서 개발이 까다로운 편이다. 무엇보다 객체 지향에서의 모듈들을 C에서 바르게 적용하기 어렵다는 점에 있다. 다만 C가 익숙하다면 다른 객체 지향 프로그래밍 언어로 작성한 프로그램을 그대로 C에서도 개발할 수 있을 만큼 개발자의 능력에 따라 구현된 프로그램의 기능이 전차만별일 수 있다. 신기하게도 C언어에는 객체 지향 프로그래밍에서 클래스(class)와 흡사한 개념으로 사용되는 구조체(Structure)가 있다. 구조체란 : 객체 지향 프로그래밍에서 말하는 클래스의 모체가 되는 것으로 여러 개의 자료형을 묶어서 새로운 자료형을 만들 수 있는 방법이다. 구조체는 여러 개의 데이터를 하나로 묶어서 사용할 수 있도록 하기 위해 만들어진 C..

C/기초 2019.07.30

문자열

char array[10]; 영어는 : 1개 크기(1byte) 한글은 : 2개 크기(2byte) 를 차지하게 된다. //하나의 문자열 안의 글자수 세기 int main(void) { char input[1001]; gets(input); int count = 0; while (input[count] != '\0') { count++; } printf("입력한 문자열의 길이는 %d 입니다.", count); printf("입력한 문자열은 : %s", input); return 0; } 문자열의 크기를 나타내는 방법을 구현해 봤다. 또한 입력된 문자열을 그대로 출력하는것을 해 보았다. #include #include //string length = strlen(); int main(void) { char i..

C/기초 2019.07.30

포인터

C언어의 가장 큰 특징이자 장점이라고 할 수 있는 부분이다. 특정 데이터가 저장된 메모리의 주소를 저장하는 변수라고 할 수 있다. 다른 곳의 주소 그 자체를 가리키기 떄문에 이를 응용하여 다양한 연산을 수행 할 수 있다. 뿐만 아니라 프로그램의 어떠한 위치에서 시행되더라도 특정한 주소를 그대로 이용하기 떄문에 값이 즉시 변경된다는 특징을 가지고 있다. 다른변수가 위치한 그 공간을 바로 접근함으로써 값을 바꾸거나, 바로 처리 할 수 있다. 포인터를 사용할떄는 꼭 *를 사용해야한다. 또한 메인메소드에서 매개변수를 넣어줄때도 &을 사용해야한다.(주소를 가리킬때는 &을 사용하기 떄문이다.) 실제로 swipe함수는 많이 사용되며 잘 이해해야한다. 다양한 운영프로그램을 사용하기도 하면서 해킹할떄도 이용하기도 한다...

C/기초 2019.07.26

배열이란

배열은 쉽게 말해 데이터가 많을 때 사용하는 것이다. 가장 간단한 프로그램 예제에서는 단순히 한 두개의 변수만으로 프로그램을 작동시킬 수 있었지만 현실에서의 다양한 프로그램에는 아주 많은 양의 데이터가 사용되는 것이 일반적이다. 따라서 데이터가 많을 때 주로 배열을 이용할 수 있다. 이때 배열은 한없이 많을 수 있으면서도 그 데이터 개수가 변경될 수 있는 데이터들의 집합을 지정해줄 수 있기에 효괒거으로 대부분의 프로그램에 사용된다. #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #define NUMBER 5 //배열을 만들때 이렇게 이용한다. #include // 5개의 정수중에서 최댓값과 최솟값의 위치를 출력하는 프로그램 int main(void) {..

C/기초 2019.07.25

반복 함수와 재귀함수

반복 함수는 단순히 while혹은 for 문법을 이용하여 특정한 처리를 반복하는 방식으로 문제를 해결하는 함수이다. 반면에 재귀 함수는 자신의 내부에서 자기 자신을 스스로 호출함으로써 재귀적으로 문제를 해결하는 함수이다. 재귀 함수는 경우에 따라서는아주 간결하고 직관적인 코드로 문제를 해결할 수 있게 해주지만 때에 따라서는 심각한 비효율성을 낳을 수 있기 때문에 알고리즘을 작성할 떄 유의할 필요가 있다. #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include // 숫자 피라미드 출력하기 (반복함수를 이용해서 숫자 피라미드를 출력한다.) // 반복함수같은 경우에는 오직 for 문과 while문으로 구성이 된다. int print(int a) { i..

C/기초 2019.07.25

사용자 정의 함수

정해진 특정한 기능을 수행하는 모듈을 의미하며 함수를 적절히 활용하면 하나의 문제를 잘게 분해할 수 있다. 예를들어 이진 탐색 트리는 삽입, 삭제, 순회 등 다양한 함수의 집합으로 구성된다. 만약 사용자 정의 함수가 없다면 오직 메인 함수에서 모든 알고리즘을 처리해야 하는데 이는 작업의 효율성을 저하시킬 수 있다. 또한 함수는 각각의 모듈로서 쉽게 수정되고 보완될 수 있다는 장점이 있다. (즉 매인함수의 크기를 줄여주고 특정한 함수를 분해해서 나중에 합친다. 매인함수가 짧고 다른함수가 많을수록 더욱 더 잘 짜여진 프로그램이라고 할 수 있다. 더 가독성이 좋은 프로그램이라고 할 수 있다.) #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include /..

C/기초 2019.07.25

기본 입출력 추가 설명

- 가끔 버퍼가 프로그램 동작을 방해한다. C언어에서는 간단하게 getchar()함수로 버퍼의 공백 문자를 받아 낼 수 있다. - 주석은 일단 최대한 많이 작성하는 습관을 들여라. 주석은 컴파일 단계에서 제거되기에 프로그램의 크기와는 상관 없기 때문이다. - scanf()함수를 사용할 때 변수 이름 앞에 &를 붙여야 한다. - 형식 지정자를 %c로 하면 엔터(ENTER)로 하나의 공백 문자로서 입력 받을 수 있다.

C/기초 2019.07.25