전체 글
C++ 정리 - 16 (EOF, 2차원 배열, if)
cin은 EOF를 탐지했을 때 두 개의 비트(eofbit와 failbit)를 1로 설정함 eof()라는 멤버 함수 사용 시, eofbit가 설정되었는지 알 수 있다. cin.eof()의 호출은 EOF가 탐지되었으면 bool값 true 리턴, 아니면 false 리턴, eof나 fail() 메서드는 가장 최근에 읽은 결과를 보고함 cin.clear() 메서드는 EOF 를 지우고, 다시 입력이 진행될 수 있도록 허용함 매개변수가 없는 cin.get() 멤버함수는 입력으로부터 그다음 문자를 읽어 리턴함 ch=cin.get(); //c의 getchar()함수와 유사하게 동작 cout.put() 함수를 문자를 출력하는데 사용 가능 cout.put(ch); 기호 상수 EOF는 iostream 헤더 파일에 정의되어있음..
C++ 정리 - 15 (while, for와 while, 시간지연루프, do while, Range 기반의 for 루프 (c++11))
while 루프 for 루프에서 초기화 부분과 갱신 부분을 없애고, 로프 몸체와 조건 검사 부분만 남겨 놓은 것 while (test-expression) body 프로그램은 먼저 test-expression을 평가함 표현식이 true로 평가되면 루프 몸체에 있는 구문(들) 실행 루프 몸체의 실행이 끝나면 조건 검사 표현식으로 돌아와 표현식 재평가 이와 같은 루프 주기는 검사 표현식이 false가 될 때까지 반복 C 스타일 문자열과는 달리, string 클래스 객체는 문자열의 끝을 인식하기 위하여 널 문자를 사용하지 않는다. for와 while 일반적으로 for 루프는 초기값, 종료 값, 카운터 갱신 방법을 한 곳에 넣을 수 있기 때문에 루프를 카운터 해야 할 때 주로 사용 while 루프는 얼마만큼 루..
C++ 정리 - 14 (조합 대입 연산자, 복합 구문 또는 블록, 콤마 연산자, 관계 연산자, C스타일&string 스타일 문자 비교)
조합 대입 연산자 연산자 효과 (L은 왼쪽 피연산자, R은 오른쪽 피연산자) += L+R을 L에 대입 -= *= /= %= 복합 구문 또는 블록 한 쌍의 중괄호를 사용하여 복합 구문 또는 블록을 만들면 루프 몸체 안에 원하는 만큼의 구문을 넣을 수 있음 블록은 중괄호와 그 안에 포함된 구문들로 구성되며, 구문 규칙 상 하나의 구문으로 간주된다. 블록 안에서 정의된 변수는 그 블록 안에서만 사용 가능 바깥 블록에서 정의된 변수는 안쪽 블록에서도 유효함 바깥 블록에 있는 변수와 이름이 같은 변수를 안쪽 블록에 새로 선언할 경우, 안쪽 블록의 변수 > 바깥 블록의 변수 콤마 연산자 C++의 구문 규칙이 하나의 표현식을 허용하는 자리에 콤마 연산자를 사용하면 두 개의 표현식을 넣을 수 있다. ex) ++j,--..
C++ 정리 - 13 (for 루프, 증가 연산자, 감소 연산자, 부수효과와 시퀀스 포인트, 접두어, 접미어 방식)
for 루프 for 루프를 구성하는 각 부분은 순서대로 다음과 같은 단계를 처리함 조건 검사에 사용할 카운터 값을 초기화 루프를 진행할 것 인지 조건을 검사 루프 몸체를 수행 카운터 값 갱신 초기화, 조건 검사, 갱신을 처리하는 for 루프의 세 제어 부분은 괄호로 묶여 있다. 이들은 각각 하나의 표현식이며, 세미콜론에 의해 분리되어 있다. 제어 부분 뒤에 오는 구문을 루프 몸체라 함 for(initialization;test_expression;update_expression) body 초기화는 처음에 단 한 번만 수행 test_expression은 루프 몸체 body를 실행할 것 인지 여부를 결정 참-거짓을 비교하는 관계식뿐만 아니라, 어떠한 표현식도 사용 가능 C++은 이러한 표현식을 bool형으로..
C++ 정리 - 12 (자동 공간, 정적 공간, 동적 공간, 변수형의 조합, Vector, array 템플릿 클래스)
자동 공간, 정적 공간, 동적 공간C++에서 데이터를 저장해 두기 위한 메모리를, 대입하는 방법에 따라 자동 공간, 정적 공간, 동적 공간(heap 라고도 부름) 으로 구분됨 자동 공간자동 변수자동 공간을 사용하는 함수 안에서 정의되는 보통의 변수들자신이 정의되어 있는 함수가 호출되는 순간에 자동으로 생겨나 그 함수가 종료되는 시점까지만 존재함. 즉, 자신들을 포함하고 있는 블럭 안에서만 유효자동 변수는 스택에 저장됨. 이것은 스택에 그 값이 순차적으로 저장되고, 역순으로 해제되는 것을 의미함 정적 공간프로그램이 실행되는 동안에 지속적으로 존재하는 공간변수를 정적으로 만드는 방법1. 함수의 외부에서 변수 정의2. 변수 선언 시 static 키워드 붙이기 동적 공간new와 delete 연산자는 융통성 있는..
C++ 정리 - 11 (포인터 -3 포인터와 배열 이름간의 차이, 포인터,배열,포인터 연산, 배열의 주소, 포인터와 문자열, 문자열의 복사본, new를 사용한 동적 구조체)
포인터와 배열 이름 간의 기본적인 차이 p3 = p3 + 1; //p3이 포인터면 맞고, 배열 이름이면 틀림 배열 이름의 값은 변경할 수 없지만, 포인터는 변수이기 때문에 값 변경 가능 p3에 1을 더하면 포인터가 첫 번째 원소가 아니라 두 번째 원소를 지시하게 됨. 포인터, 배열, 포인터 연산 포인터 변수에 1을 더하면 값이 그 포인터가 지시하는 데이터 형의 바이트 수만큼 증가함 double wages[3]={10000.0,20000.0,30000.0} double * pw = wages; C++은 배열 이름을 그 배열의 첫 번째 원소의 주소로 생각함 pw를 double형을 지시하는 포인터로 지시 후 배열의 첫 번째 원소(주소) wages로 초기화 즉, wages=&wages[0]=배열의 첫 번째 원소..
C++ 정리 - 10 (포인터 -2 포인터와 수, new를 사용한 메모리 대입, delete, 동적 배열)
포인터의 위험 long * fellow //long형을 지시하는 포인터 생성 *fellow=223323; //어딘지에 모르는 곳에 값 저장 fellow가 어디를 지시하는지 초기화를 시키지 않음 포인터와 수 포인터는 개념적으로 정수형과는 다른 데이터형이다. int * pt; pt=0xB8000000; //데이터형 불일치 실제로는 세그먼트와 오프셋이 결합된 비디오 메모리의 주소 int * pt; pt=(int *)0xB00000; //데이터형 일치 new를 사용한 메모리 대입 프로그램을 실행하는 동안에 int형 값을 이름이 없는 메모리에 대입하고 포인터를 사용해 그 메모리에 접근하는 새로운 방법 어떤 데이터형의 메모리를 원하는지 new연산자에게 알려준다. new연산자는 알맞은 크기의 메모리 블록을 찾아낸 후..
(C++기초플러스 6판 프로그래밍 연습 정답,솔루션) CHAPTER 05 루프와 관계 표현식 p.304~ 7번~10번
7번 #include #include using namespace std; struct car { string name; int YearOfManufacture; }; int main(void) { int n; coutn; car *list=new car[n]; for(int i=0;i
(C++기초플러스 6판 프로그래밍 연습 정답,솔루션) CHAPTER 05 루프와 관계 표현식 p.304~ 5번~6번
5번 #include int main() { using namespace std; char * month[12] = { "1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월" }; int salesrate[12],sum=0; for(int i = 0;i
(C++기초플러스 6판 프로그래밍 연습 정답,솔루션) CHAPTER 05 루프와 관계 표현식 p.304~ 1번~4번
1번 #include int main() { using namespace std; cout > a; cin >> b; for (int i = a; i