본문 바로가기

BackEnd/C

C 모아보기 1. C 프로그래밍의 이해2. 프로그램의 기본 구성과 printf 함수의 기능3. 이스케이프 시퀀스4. 서식문자5. 메모리 공간의 할당과 활용6. 진수와 진수변환7. 데이터 표현의 단위8. 정수와 실수의 표현 방식9. 정수와 실수의 표현 방식, 그리고 변수와의 관계10. 자료형을 나누는 기준은 무엇일까?11. 정수 자료형12. 실수 자료형13. 적절한 자료형의 선택기준14. 상수의 표현15. 상수의 이해16. 산술 연산자를 통해서 보는 연산의 원리17. 연산자들의 우선순위와 결합방향18. 다양한 연산자들의 소개19. 관계연산자와 논리연산자20. 자료형 변환 연산자21. sizeof연산자22. 연산의 결과가 남기는 것은?23. 산술연산 과정에서 발생하는 형변환의 규칙24. 함수란 무엇인가?25. 다양한 함..
I/O 인풋, 아웃풋에 대한 이해 1. I/O 모델과 스트림(Stream) 1) 스트림에 대한 이해 I/O 모델의 핵심은 스트림을 이해하는데 있다. 스트림이란 ‘데이터의 흐름’,또는 ‘데이 터의 흐름을 형성해 주는 통로’를 의미한다. 자바에서도 이러한 의미로 스트림이 인식되지 만,파일 또는 각종 I/O 장치와의 데이터 이동에 사용되는 인스턴스를 의미하는 용도로도 사용이 된다. 즉 어떤 I/O관련 클래스의 인스터스가 스트림인것이다. 이 스트림이라는것은 byte의 나열을 의미한다. 데이터의 흐름이 단방향이다. 그래서 입력과 출력을 동시에 진행할려면 입력용, 출력용 스트림을 둘다 생성해야한다. 2) 스트림의 종류 - Input Stream(인풋 스트림이라는 클래스) 프로그램으로 데이터를 읽어 들이는 스트림 프로그램으로 데이터를 읽어 들여야 하..
구조체의 추가적인 특성과 메모리 관계 1. 구조체 변수도 구조체의 멤버가 될 수 있다. 12345678910111213141516171819202122232425262728293031323334#include #define PI 3.14 typedef struct __point{ double xPos; double yPos;} point; typedef struct __circle{ point center; // 원의 중심 double rad; // 반지름} circle; void ShowCircleInfo(const circle * ptr){ printf("원의 중심: [%g, %g] \n", (ptr->center).xPos, (ptr->center).yPos); printf("원의 넓이: %g \n", (ptr->rad)*(ptr->r..
구조체 배열 구조체도 배열의 형태로 선언이 가능하다. 기본 자료형의 배열 선언방식과 동일하다. 1234567891011121314151617181920212223242526272829303132333435#include #define ARRY_LEN 3#define NAME_LEN 30#define PID_LEN 15 typedef struct __person{ char name[NAME_LEN]; char ID[PID_LEN]; unsigned int age; } person; void ShowPersonData(person * ptr); int main(void){ int i; person personArr[ARRY_LEN]={ {"한종수", "900218-1012589", 20}, {"이성은", "910218-..
구조체의 정의에 포함되는 typedef 선언 구조체의 정의와 typedef 선언을 한방에 1234567struct _person{ char name[NAME_LEN]; char ID[PID_LEN]; unsigned int age;}; typedef struct _person person;cs 위와 아래는 같은 선언방식이다. 아래 방식이 더 간결하다. 이것은 약속이니 익숙해지자. 123456typedef struct _person{ char name[NAME_LEN]; char ID[PID_LEN]; unsigned int age;}person;cs
구조체 변수로 가능한것과 불가능한 것 1. 구조체 변수로 가능한것과 불가능한 것 구조체 변수의 활용방법은 일반변수와 크게 차이가 없다. 변수로 가능한 대부분의 일이 가능하다. 1) 함수의 인자로 전달도 가능하다. 2) 반환도 가능하다. 3) 대입 연산의 피연산자로도 사용이 가능하다. 4) 단 사칙연산은 불가능하다. 1234567891011121314151617181920212223242526272829#include struct __point{ double xPos; double yPos;};typedef struct __point point; point IncrePos(point pnt){ pnt.xPos++; pnt.yPos++; return pnt;} int main(void){ point p1, p2, p3; p1.xPos=0.5; ..
구조체의 정의 1. 구조체의 정의 예를 들어 하나의 구조체를 정의 해보겠다. 그룹을 지어줘야 하는 데이터 x좌표 정보와 y좌표 정보가 있다면, 이들 각각을 저장 하기 위한 변 수의 이름을 xPos, yPos라 해보자. 그리고 이들은 모두 double형으로 선언한다고 가정해 보자. 그렇다면 위의 두 변수를 묶어서 관리할 수 있어야 하는데, 이 때 필요한 것이 구조체이며 구조체 를 기반으로 두 변수를 묶으면 위와 같은 형태가 된다. xPos, yPos를 묶어서 하나의 자료형을 구 성한 것이다. 그리고 키워드 struct는 이것이 구조체의 정의가 되도록 한다. 만약에 struct가 아닌 다른 키워드가 온다면, 이는 구조체가 아닌 또 다른 형태의 정의가 된다. 그리고 point라는 이름 은 구조체의 이름이며, 변수의 선언에 ..
구조체의 필요성 구조체의 필요성 표현하는 데이터들은 그룹을 형성하게 되기 때문에 구초제가 만들어지게 된것이다. 예를 들어 주소록 관리 프로그램을 구현해야한다면 이름, 주소, 전화번호가 필요하고 도서 관리 프로그램을 구현해야 한다면, 제목, 정가, 출판사등이 필요하다. 이와 같은 데이터들이 그룹을 형성하게 된다. 이렇게 그룹을 형성하는 데이터들을 묶어서 관리할 수 있다면, 프로그램 내에서 데이터들을 관리 하기가 한결 수월해진다. 그래서 이러한 목적으로 디자인 된 것이 바로 구조체이다.