목차 일부
저자서문 ... 4
역자서문 ... 6
이 책의 구성 ... 8
CHAPTER 1 자, 슬슬 나만의 코드를 작성해보자!
1-1 C 프로그램의 확장자란? ... 20
1-2 main()함수란? ... 23
1-3 EOF가 뭐지? : 파괴된 함수 블록 ... 27
1-4 망가진 케익은 먹지 않는다! : 들여쓰기 ... 30
1-5 공...
더보기
목차 전체
저자서문 ... 4
역자서문 ... 6
이 책의 구성 ... 8
CHAPTER 1 자, 슬슬 나만의 코드를 작성해보자!
1-1 C 프로그램의 확장자란? ... 20
1-2 main()함수란? ... 23
1-3 EOF가 뭐지? : 파괴된 함수 블록 ... 27
1-4 망가진 케익은 먹지 않는다! : 들여쓰기 ... 30
1-5 공사 중이라면 표지판을 세우자 : 주석문 ... 33
1-6 흔히 있는 주석문 착각 : 주석문 중첩 ... 36
1-7 끝맺음이 없는 문장을 만들지 말자 ... 39
1-8 함수를 사용한다면 라이브러리 헤더 파일을 인클루드하자 ... 42
1-9 include의 〈 〉과 " "는 어떻게 다른 거야? ... 45
1-10 올바른 명령행 인수를 얻읍시다 ... 48
1-11 올바른 방법으로 프로그램을 종료하자 ... 52
1-12 printf() 함수를 잘 다루자 ... 56
CHAPTER 2 자료형, 키워드, 변수 다루기에 익숙해지자
2-1 자료형과 키워드는 모두 소문자로 쓰자 ... 66
2-2 변수명의 규칙은 무엇인가? ... 68
2-3 변수는 반드시 초기화하자 ... 74
2-4 변수의 선언이나 초기화문을 정리하자 ... 78
2-5 C 프로그램에서 수치 값을 기술하려면 어떻게 해야 되는가? ... 82
2-6 char형 배열을 올바르게 초기화하려면 ... 87
2-7 char형 배열을 긴 문자열로 초기화하려면 ... 90
2-8 변수가 숨어버렸다! ... 93
2-9 왜 변수를 사용할 수 없는가? ... 96
2-10 문자와 문자열을 올바르게 구분하여 사용하자 ... 99
CHAPTER 3 연산자와 조건 처리에 익숙해지자
3-1 조건이 평가되는 순서를 생각하라 ... 106
3-2 프로그램이 왜 이상해졌을까? ... 112
3-3 왜 변수를 증가시킬 수 없는가? ... 117
3-4 좌변 값이 될 수 없는 식이 있는가? ... 120
3-5 쓸모 있는 if문을 작성하자 ... 123
3-6 불명확한 if와 else의 대응을 조심하자 ... 126
3-7 이상하다? if-else문이 작동하지 않는 이상한 조건 ... 134
3-8 왜 항상 동일한 값이 될까? ... 139
3-9 장황하게 표현된 if-else문(1) : switch문을 사용하자 ... 142
3-10 장황하게 표현된 if-else문(2) : 조건 연산자를 사용하자 ... 145
3-11 switch/case의 포인트(1) : 정수 상수 ... 151
3-12 switch/case의 포인트(2) : break문 ... 156
CHAPTER 4 루프 제어에 익숙해지자
4-1 프로그램에 상수를 넣어두지 말자 : define ... 166
4-2 왜 1부터 시작하면 안 되는 걸까? ... 170
4-3 루프에서는 절대로 방어한다 : 경계 초월 ... 174
4-4 어떻게 하지? 루프가 멈추지 않네 : 종료 조건이 없다 ... 177
4-5 루프가 이상하다! 제어 변수 초기화를 잊었다 ... 180
4-6 무한루프를 활용하자 : 루프 탈출 ... 184
4-7 도움이 안 되는 지연 루틴 ... 190
4-8 while 루프에서 자주 저지르는 실수 : 제어 변수 갱신 까먹기 ... 197
4-9 쉽게 빠져나오지 못하는 루프 : 중첩 루프 ... 202
4-10 goto문의 사용은 이제 그만 : 구조적 프로그래밍 ... 206
CHAPTER 5 배열, 문자, 문자열 다루기에 익숙해지자(포이터 : 첫 번째)
5-1 문자열의 길이를 구하는 포인트 : 널 문자 ... 214
5-2 포인터 조작의 포인트(1) : 포인터의 초기화 ... 218
5-3 포인터 조작의 포인트(2) : 포인터가 참조하는 곳의 초기화 ... 222
5-4 문자열을 연결하는 포인트(1) : 널 문자 ... 227
5-5 문자열을 연결하는 포인트(2) : 충분한 사이즈 ... 230
5-6 문자열을 연결하는 포인트(3) : strncat()함수 ... 233
5-7 문자열을 복사하는 포인트(1) : 널 문자 ... 236
5-8 문자열을 복사하는 포인트(2) : strncpy()함수 ... 239
5-9 문자열을 비교하는 포인트 널 : 문자 ... 243
5-10 이상하다. 입출력을 재지정할 수 없다 ... 246
5-11 다차원 배열에서 자주 하는 실수 : 불명확한 초기화 ... 251
5-12 포인터 조작의 포인트(3) : 값과 주소의 차이 ... 255
5-13 포인터 조작의 포인트(4) : 문자열 정렬 ... 258
CHAPTER 6 정수, 실수, 비트 다루기에 익숙해지자(포인터 : 두 번째)
6-1 printf()함수가 이상하다! : 연산자의 우측 결합 ... 268
6-2 포인터 조작의 포인트(5) : 주소 다루기 ... 272
6-3 다른 자료형 간의 대입을 조심하자 : 데이터 손실 ... 280
6-4 명시적 형변환을 조심하자 : 경고가 없어진다 ... 285
6-5 가감승제 연산자의 우선순위에 주의하자 ... 288
6-6 지수 표기법을 사용하려면? ... 292
6-7 비트 연산자를 사용했더니 정수의 부호가 바뀌었다 ... 298
6-8 비트 다루기에 익숙해지자 ... 303
6-9 C의 정수형과 컴퓨터에서 숫자를 다루는 구조를 이해하자 ... 309
6-10 16비트 환경과 32비트 환경 모두의 int형을 지원하고 싶다 : 이식성 문제 ... 318
CHAPTER 7 함수 다루기에 익숙해지자(포인터 : 세 번째)
7-1 함수 정의의 포인트(1) : 변수의 수명을 이해하자 ... 330
7-2 함수 정의의 포인트(2) : 자료형을 지정하자 ... 334
7-3 함수 정의의 포인트(3) : 함수 원형을 선언하자 ... 338
7-4 함수 정의의 포인트(4) : 외부 선언을 사용하자 ... 343
7-5 함수 정의의 포인트(5) : 인수와 반환 값을 값에 의한 전달로 처리하기 ... 347
7-6 함수 정의의 포인트(6) : 인수와 반환 값의 참조(포인터) 전달 ... 351
7-7 포인터 조작의 포인트(6) : 실체가 없는 반환 값 포인터 ... 356
7-8 이상하다! 재귀 함수를 올바르게 종료할 수 없다 : 재귀 함수의 종료 ... 361
7-9 거듭제곱을 구하는 함수의 계산이 이상하다 : 재귀 함수의 초기화 ... 366
7-10 함수 정의의 포인트(7) : 공통 루틴 다루기 ... 371
CHAPTER 8 구조체 다루기에 익숙해지자(포인터 : 네 번째)
8-1 구조체를 능숙하게 사용하자 ... 382
8-2 구조체 변수를 잘 선언하자 ... 387
8-3 구조체명은 자료형으로 사용할 수 없는가? ... 391
8-4 포인터 조작의 포인트(7) : char형 배열과 char *형 변수 ... 396
8-5 포인터 조작의 포인트(8) : 왜 갑자기 화살표 연산자를 사용할 수 없지? ... 403
8-6 구조체의 비트 필드를 활용하자 ... 409
8-7 불완전한 비트 테스터 : 열거형의 이름 붙은 상수를 사용한다 ... 415
CHAPTER 9 동적 메모리 할당에 익숙해지자(포인터 : 다섯 번째)
9-1 포인터 조작의 포인트(9) : NULL 포인터 다루기(1) ... 426
9-2 포인터 조작의 포인트(10) : void *형 포인터의 형변환 ... 431
9-3 포인터 조작의 포인트(11) : 포인터의 보폭 차이를 이해한다 ... 435
9-4 포인터 조작의 포인트(12) : void *형의 포인터의 능숙한 사용법 ... 440
9-5 포인터 조작의 포인트(13) : 포인터가 참조하는 곳의 초기화 ... 447
9-6 메모리 영역을 복사하려면? ... 452
9-7 포인터 조작의 포인트(14) : NULL 포인터 다루기(2) ... 457
9-8 포인터 조작의 포인트(15) : 함수 포인터 ... 469
9-9 동적 연결 리스트를 만들려면? ... 474
CHAPTER 10 파일 다루기에 익숙해지자(포인터 : 여섯 번째)
10-1 포인터 조작의 포인트(16) : NULL 포인터 다루기(3) ... 492
10-2 환경에 의존적인 함수는 사용하지 말자 : 파일 크기 ... 500
10-3 fgets() 함수의 동작이 이상하다 ... 508
10-4 왜 복사한 파일의 크기가 다르지? : 크기 지정 ... 520
10-5 이상하다! 맨 마지막 줄이 잘 출력되지 않는다 : 자주 있는 문제 ... 527
10-6 포인터 조작의 포인트(17) : 포인터를 파일로 저장해서는 안 된다 ... 537
10-7 가변 길이 레코드를 임의접근 하려면? ... 546
찾아보기 ... 563
더보기 닫기