차근차근/C

누구나 쉽게 즐기는 C언어 콘서트

예쁜꽃이피었으면 2014. 8. 8. 18:10

누구나 쉽게 즐기는 C언어 콘서트

누구나 쉽게 즐기는 C언어 콘서트.docx


 

CHAPTER 02 기초사항

1.     #으로 시작하는 문장은 전처리기 지시자이다.

전처리기는 보통 본격적으로 컴파일하기 전에 사전 정지 작업을 하는 컴파일러의 일부분이다.

#include는 소스코드안에 특정 파일을 현재의 위치에 포함 시키라고 지시한다.

 

헤더파일은 컴파일러가 필요로 하는 정보를 가지고 있다.

전처리기 지시자 문장 끝에는 세미콜론을 붙이면 안 된다.

2.     모든 c프로그램은 main()에서 시작한다. 따라서 모든 c프로그램에는 반드시 하나의 main()함수가 있어야 한다.

3.     라이브러리 함수란 프로그래머가 사용할 수 있도록 컴파일러가 기본적으로 제공하는 함수들을 의미한다.

4.     변수란 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간이다.

5.     상수란 그 값이 프로그램이 실행되는 동안 변하지 않는 수 또는 변경 불가능한 수를 의미.

6.     Scanf(형식 제어 문자열 ,  &변수); <-데이터를 전달하기 위해서는 변수의 주소를 알아야 한다.

CHAPTER 03 변수와 자료형

1.     변수는 사용하기 전에 반드시 미리 선언(declare)하여야 한다. ->안하면 컴파일 오류남 / c언어니까 시작부분에 선언.

2.      정수형에서 오버플로가 발생하더라도 컴파일러는 아무런 경고를 하지 않는다. 오버플로가 발생하면 전체적으로 부정확한 결과가 계산된다. 그러니까 프로그래머 스스로 오버플로가 일어니지 않도록 주의해야 한다.

3.     #define이 들어가는 문장은 보통 컴파일러가 동작하기 전에 전처리기가 처리한다.

Const를 변수 선언 앞에 붙이면 상수가 된다.

CHAPTER 04 수식과 연산자

1.     수식이란 피연산자들과 연산자의 조합.

CHAPTER 05 조건문

1.     If / switch / break,coutinue

CHAPTER 06 반복문

1.     While / for

2.     프로그램의 흐름의 제어하는 방법 : 순차->선택->반복

CHAPTER 07 함수

1.     모듈 독립되어 있는 프로그램의 일부분

모듈러프로그래밍 모듈 개념을 사용하는 모듈러 프로그래밍

장점

1) 각 모듈들은 독자적으로 개발이 가능

2) 다른 모듈과 독립적으로 변경가능

3) 유지보수가 쉬워진다

4) 모듈의 재사용 가능

2. 함수 사용자 정의 함수 / 라이브러리 함수

3. void : 함수를 호출할 때 전달되어 지는 값이 없는 경우

4. 인수(실인수 / 가인수) = 인자 = 파라미터 = 매개변수

5. 반환형 함수이름(매개변수 , 매개변수2){ 함수 몸체}

6. static지정자 지역변수처럼 블록에서만 사용되지만 블록을 벗어나도 자동으로 삭제되지 않는 변수를 만들 때

7. register지정자 변수를 레지스터 변수로 만든다.(변수를 메모리에 저장하는 것이 아니라 레지스터에 저장.

8. extern지정자 컴파일러에게 변수가 현재 범위가 아닌 다른 곳에서 선언되었다는 것을 알리는 역할

(외부파일에서 정의된 전역변수를 현재의 파일에서 사용하려고 하는 경우에 많이 사용)

9. 순환 : 함수는 자기 자신을 호출할 수 있다. (ex 팩토리얼!)

CHAPTER 08 배열

1.     자료형 배열이름[배열크기]; -> 0부터 시작

2.     인덱스가 배열의 크기를 벗어나게 되면 프로그램에 치명적인 오류가 발생하니까 조심

3.     배열의 초기화

1)     초기 값을 일부만 주면 나머지 원소들은 0 으로 초기화된다.

2)     배열의 크기가 주어지지 않은 경우에는 초기 값의 개수가 배열의 크기가 된다.

3)     배열을 지역변수로 선언하면 초기화되지 않은 배열은 쓰레기 값을 가지게 된다.

CHAPTER 09 포인터

1.     포인터는 메모리의 주소를 가지고 있는 변수로, 변수가 저장되는 주소와 관계있음

2.     메모리는 각 바이트마다 고유한 주소를 가지고 있다. 이 주소에 의해 메모리의 각 바이트가 액세스된다.

3.     변수의 주소를 알려면 주소연산자&사용 / ‘&’는 변수의 이름을 받아서 변수의 주소를 반환

4.     포인터 변수 선언 자료형쓰고 * 붙이고 포인터이름

5.     함수 호출 시 인수 전달 방식

1)     값에 의한 호출(call-by-value) : 인수의 값이 전달

2)     참조에 의한 호출(call-by-reference) : 주소에 의한 호출

6.     포인터 사용 장점

1)     연결 리스트나 이진 트리 등 향상된 구조를 만들 수 있다.

2)     참조에 의한 호출 : 포인터를 매개변수로 이용하여 함수 외부의 변수의 값을 변경할 수 있다.

3)     동적메모리 할당

CHAPTER 10 문자와 문자열

1.     문자열은 여러 개의 문자로 이루어져 있으므로 문자배열로 저장이 가능

2.     null문자는 문자열의 끝을 나타낸다.

(문자열의 끝에는 항상 null문자가 들어가야 한다. / null문자의 필요성 : 정상적인 데이터와 쓰레기 값을 분리하기 위해서)

CHAPTER 11 구조체

1.     프로그래머가 여러 개의 자료형들을 묶어서 새로운 자료형을 만들 수 있는 방법. 구조체는 객체 지행 프로그래밍에서 말하는 클래스의 모체가 된다.

2.     구조체의 선언           struct 태그{자료형 멤버1,          자료형 멤버2, … };

3.     구조체에서 포인터가 사용되는 경우

1)     구조체르 가리키는 포인터

2)     포인터를 멤버로 가지는 구조체

4.     공용체 : 같은 메모리 공간을 여러 개의 변수들이 공유할 수 있게 하는 기능. (메모리 절약)

5.     열거형 : 변수가 가질 수 있는 값들을 미리 열거해놓은 자료형. Ex)요일 : ,,,,..

6.     Typedef : 새로운 자료형을 정의하는 것

장점

1)     이식성을 높여준다. – 자신의 코드를 컴퓨터 하드웨어에 독립적으로 만들수 있다.

2)     #define과의 차이점 – define은 기계적인 변환 , typedef는 컴파일러가 처리

3)     문서화의 역할도 한다. – 주석과 같은 효과

CHAPTER 12 표준 입출력과 파일 입출력

1.     스트림 : 모든 입력과 출력을 바이트들의 흐름으로 생각하는 것.

CHAPTER 13 전처리 및 기타 기능

1.     전처리기 : 본격적으로 컴파일하기에 앞서 소스파일을 처리하는 컴파일러의 한 부분.

2.     단순 매크로 : #define문을 이용하여 숫자상수를 기호상수로 만드는 것

3.     함수 매크로 : 매크로가 함수처럼 매개 변수를 가지는 것

4.     매크로를 함수대신 사용할 때 장점 ,단점

1)     장점 : 함수 매크로는 함수에 비해 수행 속도가 빠르다

2)     단점 : 코드의 길이를 어느 한도 이상 길게 할 수 없다.

5.     #ifdef은 조건부 컴파일을 지시하는 전처리기 지시자이다.

(조건부 컴파일 : 어떤 조건이 만족되는 경우에만 지정된 소스코드 블록을 컴파일 / #ifdef #endif사이에 있는 모든 문장들을 컴파일)

디버깅할 때 많이 사용.

6.     #if #if다음에 있는 기호 상수를 검사해서 기호 상수가 참으로 계산되면 #if #end if사이에 있는 모든 코드를 컴파일

CHAPTER 14 동적 메모리

1.     정적 메모리 할당 : 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것

2.     동적 메모리 할당 : 프로그램이 실행 도중에 동적으로 메모리를 할당받는 것

(동적 메모리는 malloc()계열의 라이브러리 함수를 사용하여 할당받을 수 있다. 프로그램이 실행되다가 malloc()함수를 만나면 운영체제가 호출되어서 필요한 만큼의 동적 메모리를 할당하게 된다.)

3.     연결 리스트 : 연결 리스트에서는 각가의 원소가 포인터를 사용하여 다음 원소의 위치를 가르킨다.

(포인터를 사용하는 것 : 연결 리스트, 스택, , 트리, 그래프 등..)

반응형

'차근차근 > C' 카테고리의 다른 글

[C++ STL 프로그래밍] 맵 (Map)  (0) 2014.08.18
[Map & MultiMap 삽입, 검색, 삭제] - url  (0) 2014.08.18
sprintf  (0) 2014.08.06
cout  (0) 2014.08.06
C 언어 레퍼런스 - atol 함수  (0) 2014.08.06