윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2
Chapter 23-1. 구조체의 정의와 typedef 선언 윤성우의 열혈 C 프로그래밍 Chapter 23-1. 구조체의 정의와 typedef 선언 윤성우 저 열혈강의 C 프로그래밍 개정판
typedef 선언 윤성우의 열혈 C 프로그래밍 typedef int INT; INT num; INT * ptr; 정의되는 이름들 실행결과
구조체 정의와 typedef 선언 윤성우의 열혈 C 프로그래밍 구조체 point 정의 후 struct point에 Point라는 이름을 부여하기 위한 typedef 선언 추가! 합친 형태 구조체 point의 정의와 Point에 대한 typedef 선언을 한데 묶은 형태
구조체 정의와 typedef 선언 관련 예제 윤성우의 열혈 C 프로그래밍 구조체 point의 정의와 typedef 선언 구조체 person의 정의와 Person이라는 이름의 typedef 선언을 하나로! 실행결과
구조체의 이름 생략 윤성우의 열혈 C 프로그래밍 typedef 선언으로 인해서 새로운 이름 Person이 정의되었으니, 구조체의 이름 persons은 큰 의미가 없다. 이름이 생략된 형태 따라서 이렇듯 구조체의 이름을 생략하는 것도 가능하다.
Chapter 23-2. 함수로의 구조체 변수 전달과 반환 윤성우의 열혈 C 프로그래밍 Chapter 23-2. 함수로의 구조체 변수 전달과 반환 윤성우 저 열혈강의 C 프로그래밍 개정판
함수의 인자로 전달되고 return문에 의해 반환되는 구조체 변수1 윤성우의 열혈 C 프로그래밍 함수의 인자로 전달되고 return문에 의해 반환되는 구조체 변수1 구조체 변수 cen이 통째로 반환된다. 실행결과 ShowPosition 함수의 매개변수에 curPos에 저장된 값이 통째로 복사된다.
배열까지도 통째로 복사 윤성우의 열혈 C 프로그래밍 구조체의 멤버로 배열이 선언된 경우 구조체 변수를 인자로 전달하거나 반환 시 배열까지도 통째로 복사가 이뤄진다. 실행결과
구조체 기반의 Call-by-reference 윤성우의 열혈 C 프로그래밍 구조체 기반의 Call-by-reference 구조체 변수 대상의 Call-by-reference는 일반변수의 Call-by-reference와 동일하다. 실행결과
구조체 변수를 대상으로 가능한 연산1 윤성우의 열혈 C 프로그래밍 구조체 변수간 대입연산의 결과로 멤버 대 멤버 복사가 이뤄진다는 사실을 확인하자! 실행결과
구조체 변수를 대상으로 가능한 연산2 윤성우의 열혈 C 프로그래밍 구조체 Point의 덧셈 함수 구조체 변수를 대상으로는 덧셈 및 뺄셈 연산이 불가능하다. 따라서 필요하다면 덧셈함수와 뺄셈함수를 정의해야 한다. 구조체 Point의 뺄셈 함수 실행결과
Chapter 23-3. 구조체의 유용함에 대한 논의와 중첩 구조체 윤성우의 열혈 C 프로그래밍 Chapter 23-3. 구조체의 유용함에 대한 논의와 중첩 구조체 윤성우 저 열혈강의 C 프로그래밍 개정판
구조체를 정의하는 이유 윤성우의 열혈 C 프로그래밍 구조체의 정의 이유! 하나의 배열 선언으로 종류가 다른 ▶ 연관 있는 데이터를 하나로 묶을 수 있는 자료형을 정의할 수 있다. ▶ 연관 있는 데이터를 묶으면 데이터의 표현 및 관리가 용이해진다. ▶ 데이터의 표현 및 관리가 용이해지면 그만큼 합리적인 코드를 작성할 수 있다. 구조체의 정의 이유! 하나의 배열 선언으로 종류가 다른 데이터들을 한데 저장할 수 있다.. 인자 전달 시 용이하다.
중첩된 구조체의 정의와 변수의 선언 윤성우의 열혈 C 프로그래밍 앞서 정의한 구조체는 이후에 새로운 구조체를 선언하는데 있어서 기본 자료형의 이름과 마찬가지로 사용이 될 수 있다. 실행결과
Chapter 23-4. 공용체(Union Type)의 정의와 의미 윤성우의 열혈 C 프로그래밍 Chapter 23-4. 공용체(Union Type)의 정의와 의미 윤성우 저 열혈강의 C 프로그래밍 개정판
구조체 vs. 공용체: 선언방식의 차이 윤성우의 열혈 C 프로그래밍 정의 방법에 있어서의 차이는 키워드 struct를 쓰느냐, 아니면 키워드 union을 쓰느냐에 있다!
구조체 vs. 공용체: 실행결과를 통한 관찰 윤성우의 열혈 C 프로그래밍 공용체 변수를 이루는 멤버의 시작 주소 값이 모두 동일함을 관찰하고 공용체 변수의 크기 값을 관찰한다! 실행결과
윤성우의 열혈 C 프로그래밍 구조체 vs. 공용체: 메모리적 차이 실행결과 mem1에 저장된 데이터를 덮어쓴다.
윤성우의 열혈 C 프로그래밍 공용체의 유용함1: 문제의 제시 해결책이 되는 공용체의 정의
윤성우의 열혈 C 프로그래밍 공용체의 유용함2: 문제의 해결 실행결과
Chapter 23-5. 열거형(Enumerated Type)의 정의와 의미 윤성우의 열혈 C 프로그래밍 Chapter 23-5. 열거형(Enumerated Type)의 정의와 의미 윤성우 저 열혈강의 C 프로그래밍 개정판
열거형의 정의와 변수의 선언 윤성우의 열혈 C 프로그래밍 ▶ 열거형 syllable의 정의의 의미 Do, Re, Mi, Fa. . . . 를 열거형 상수라 한다. Do를 정수 1을 의미하는 상수로 정의한다. 그리고 이 값은 syllable형 변수에 저장이 가능하다 ▶ syllable형 변수의 선언 enum syllable tone; // syllable형 변수 tone의 선언 구조체 공용체와 마찬가지로 typedef 선언을 추가하여 enum 선언을 생략할 수 있다.
열거형의 정의와 변수선언의 예 윤성우의 열혈 C 프로그래밍 typedef 선언이 추가된 열거형의 정의 및 선언 실행결과 열거형 상수는 선언 이후 어디서건 쓸 수 있는 상수가 된다.
열거형 상수의 값이 결정되는 방식 윤성우의 열혈 C 프로그래밍 동일한 선언 열거형 상수의 값은 명시되지 않으면 0부터 시작해서 1씩 증가한다. 동일한 선언 값이 명시되지 않는 상수는 앞에 정의된 상수 값에서 1이 증가한다.
열거형의 유용함은 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 윤성우의 열혈 C 프로그래밍 열거형의 유용함 typedef enum syllable { Do=1, Re=2, Mi=3, Fa=4, So=5, La=6, Ti=7 } Syllable; Syllable이라는 이름의 자료형 안에서 음계에 관련있는 상수들을 모두 묶어서 정의하였다! 변수의 선언이 목적이 아닌 상수의 선언이 목적인 경우 이렇듯 열거형의 이름과 typedef 선언을 생략하기도 한다. enum { Do=1, Re=2, Mi=3, Fa=4, So=5, La=6, Ti=7 }; 열거형의 유용함은 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 프로그램의 가독성을 높이는데 있다.
Chapter 23이 끝났습니다. 질문 있으신지요?