반응형
Chapter 1

1. C는 절차적 언어이며, 하향식이다 (규모큰 것에서 작은 것으로 쪼개나가기)
2. 간결성과 신뢰성, 유지보수가 용이하지만, 규모가 큰 경우 힘들었다.

3. C++은 새로운 데이터형인 class를 이용하여
4. class에 의해 생성되는 데이타구조인 object=객체 를 이요한다.
5. 객체를 표현하는 데이타부분과 데이타를 대상을 수행할수있는 동작부분(메쏘드)으로 나눈다.

6. 객체지향 프로그래밍이란, 객체를 저확하게 서술하는 클래스를 설계하는 것이다.
    저수준 -> 고수준 = 상향식 이라한다.

7. 데이타와 메쏘드를 함께 클래스에 정의 가능하며
8. 원시코드를 쉽게 작성하여 수고를 들고, 재사용이 가능
9. 정보를 은닉할 수 있어서 데이타를 보호할 수 있고,
10. 이름이 같아도 재정의가 가능하다 - 오버로딩
11. 상속을 이용하여 새롭게 정의할 수있고
12. C++ 템플릿을 이용하여 특정 테이타형에 국한되지 않는 범용적 설계가 가능한 장점이 있다.

13. 원시코드 - 컴파일러 - 목적코드 - 링커(o)_lib_시동코드 - 실행가능한코드(exe)

Chapter 2
1. #include <iostream> 신식 // #include <iostream.h> 구식
2. using namespace std; : using 지시자를 사용해서 이름공간을 셋팅한다
   ex) cout 은 원래 std::cout 임.
3. 매인함수의 return값은 운영체제가 처리하며 쉘스크립트나 배치파일을 설계할 수 있다.

Chapter 3 ~ 4
1. unsigned 변수시에는 음수영역대를 없애서 양수영역대로 늘림
2. const 상수 : 선언할 때 초기화를 같이 해주어야함.
3. #define과 다른점은 데이터형이 명확하고, 특정범위를 설정해서 범위를 제한할 수 있고,
4. 복잡한 데이타형에도 사용이 가능하다.

5. 산술연산은 수학의 순서를 따라감
6. 데이타변환 자동변환 되데, 강제변환은
   ex) int(name), (int)name 어떻게 사용해도 가능
7. 배열, int card[4] = {1,2,3,4};
           int card[] = {1,5,3,5};  // 원소갯수 = 4 = sizeof card / sizeof (int)
8. 문자열 마지막엔 Null문자가 들어감. char st[] = "abcdef"; - null이 마지막에 알아서 들어감
9. strlen() : 널문자를 제외한 길이를 알려줌
10. cin 은 문자열 끝을 빈칸, 탭, 개행문자와 같은 여백을 간주함. 그리고 null을 넣음.
11. cin.getline 은 엔터에 의해서만 문자열 끝을 간주(개행문자 들어올시 개행문자를 null로 바꿔 저장)
12. cin.getline( 변수명, size ) : size-1 만큼 변수이름에 문자열 저장
13. cin.get( 변수명, size ) : getline과 다르게 개행문자를 그대로 큐에 놔둔다.
14. cin.get( name, 10);   or cin 도 마찬가지
     cin.get( name2, 10);
     -> 두번째 get이 바로 개행문자(첫번째의 ..)를 만나면서 무조건 읽고 끝내버림.
15. cin.get( name, 10);
     cin.get();  -> 널문자를 미리 읽게한다.
     cin.get( name2, 10);
16. getline , get 에 할당된 길이보다 문자열이 더 길면 나머지 문자들은 입력큐에 그대로 둔다.
     failbit를 설정해놓고 더이상 입력받지 않음.
17. cin 도 개행문자를 저장한다.
     cin 이후에 바로 getline을 쓰면 입력큐에서 처음에 개행문자를 읽어 Null로 대채해서 저장.
18. struct s_name {   // 구조체 템플릿 생성
        int a;
        int b;
     };
     s_name name[] = {  //s_name name[0], name[1] 선언과 초기화
       {10, 20},
       {20, 30}
     };

19. union n_name{ // 공용체 템플릿 생성, 한시점에 한가지만 사용가능하다.
        int a;             // 가장큰 멤버의 크기로 공간이 설정되므로 메모리가 절약된다.
        long b;
        double c;
     };

20. enum const를 이용해 기호상수로 가능함.
     enum spectrum { a, b ,c ,d ,e ,f ,g }; // 0부터 기호상수가 자동으로 대입됨
     enum spectrum { a=1, b, c=10 .. }; // 명시적으로 대입이 가능함. 일부만 명시적이여도 가능.
     
     spectrum Abcd;
     Abcd = c;   // 열거체 변수에는 해당 열거체의 열거자(멤버)마 대입가능, 산술연산 불가능
     int color = d;     // int 변수에도 대입할 수있으나, 열거체에 int값을 따로 대입할 순 없다.
     d = 12; // 불가능하지만, 데이터형변환을 줘서 가능하게 할 수도있다.
     d = Abcd(12); // 가능, 하지만 열거자들 중에 최대값이 12이상이여야 한다. 범위제한

21. int *pt = new int; // int형을 저장할 메모리 할당 // 메모리 동적할당
     *pt = 1001; // 값을 메모리에 저장
     delete pt; // 메모리 해제, pt가 가리키는 메모리가 해제되지, pt를 못 쓰게 되는건 아니다.

22. int *ps = new int [100]; // int형 배열 동적 할당
     delete [] ps; // 배열 해제

23. struct inhlatable{    // 동적할당 구조체 멤버 접근 방법
       char name[20];
       float volume;
       double price;
     };

     int main(){        
     inflatable *ps = new inflatable;
     cin.get(ps->name, 20);   // 멤버 접근 첫번째 방법
     .....
     cin >> (*ps).volume;      // 멤버 접근 두번째 방법

24. 자동공간(auto) : 함수 안에서 정의되는 것들 함수 내부적에만 존재한다.
25. 정적공간(static) : 함수 외부, 내부에서 static 선언. 프로그램 실행동안 지속존재공간.
26. 동적공간(heap) : 메모리 할당과, 해제가 위치에 구애받지 않는다.


※ 5장 연습문제



#include <iostream>
#include <cstring>

using namespace std;

struct car{
 char name[20];
 int year;
};

int main()
{
 int count;
 cin >> count;
 cin.get();

 car *pt = new car[count];

 for(int i = 0; i < count; i++){
  cout << "자동차#" << i+1 << "\n";
  
  cout << "제작업체 : ";
  //cin.getline((pt+i)->name, sizeof((pt+i)->name));   //같다.
  cin.getline(pt[i].name, sizeof(pt[i].name));         //같다.  
 
  cout << "제작년도 : ";  
  cin >> (pt+i)->year;   //cin 사용했으니 get으로 널처리~
  cin.get();
 }

 for(i = 0; i< count ;i ++){
  cout << (pt+i)->year << "년도형 " << (pt+i)->name << "\n";
 } 

 delete [] pt;

 return 0;
}

    

반응형
Posted by Rainfly
l