전체 글 129

15장 포인터 고급

15.1 const 15.1.1 상수의 정의 const 키워드 : 상수를 정의 const type name = 초기값 ; 변수를 선언할 때 반드시 초기화 해야됨 예제 const #include const int hour = 24; const int min = 60; const int sec = 60; void main(void) { printf("하루는 %d초\n", hour*min*sec ) ; } const에 의해 만들어지는 상수는 컴파일시에 값이 결정되기 때문에 배열의 크기 지정에도 사용 가능 const의 장점 #define이 정의 하는 매크로 상수는 타입을 지정할 수 없지만 const는 타입을 명확하게 지정 가능함 매크로 상수는 정의 된 후에는 언제든지 사용 가능하지만 const는 통용 범위 규칙..

13장 구조체

13.1 구조체 13.1.1 정의 타입이 다른 변수들의 집합 (이종 변수 집합) 정수나 실수 또는 문자열 등의 단순한 형태로 나타낼 수 없는 복잡한 데이터를 표현할 때 구조체를 사용 관련 정보를 하나의 구조체로 묶어서 선언하면 양이 많은 정보도 쉽게 다룰 수 있으며 함수를 통해 복잡한 정보를 전달하거나 리턴 받을 수도 있다. 구조체 선언은 구조체의 모양을 컴파일러에게 알리는 것 뿐 static, register 같은 기억 부류를 지정한다든가 초기값을 줄 수 없다. 여러 가지 정보들이 모여서 하나의 완성된 정보를 구성하기 때문에 실생활에서 예를 들 수 있음 도서 정보 : 저자, 출판사, 출판년도, 총 페이지수, 가격, 도서 번호 상품 정보 : 상품명, 제조사, 용량, 입고일, 매입가, 판매가, 할인율 게임..

12장 문자열 함수

12.1 문자열 함수 12.1.1 문자열 복사 C언어에서 문자열은 널 종료 문자가 끝에 있는 문자 배열로 표현하며 기본 타입에 포함되지 않는다. str1 = "korea" ; // 문자열 상수를 대입할 수 없음 str1 = str2 ; // 배열끼리도 대입할 수 없음 str3 = str1 + str2 ; // +연산자로 문자열을 연결할 수 없음 if ( str1 == str2 ) // == 연산자로 문자열끼리 비교할 수 없음 문자열이 기본 타입이 아니다 보니 정수나 실수처럼 연산자를 사용할 수는 없지만 문자열 함수를 사용하면 내용을 바꾸거나 비교, 연결하는 것은 물론이고 검색, 변환 등 연산자보다 훨씬 더 다양한 작업을 효율적으로 처리 할 수 있다. 문자 배열에 문자열을 복사하는 함수 char *strc..

11장 배열과 포인터

11.1 첨자 연산 11.1.1 배열의 내부적 처리 C언어 배열의 특징 C는 내부적으로 1차원 배열만 지원한다. 2차원 이상의 다차원 배열은 1차원 배열의 확장에 불과하다. C에는 2차원 배열이라는 것이 없다. 배열을 구성하는 배열 요소의 타입에는 전혀 제한이 없다. T형 변수를 선언할 수 있으면 T형 배열도 언제나 선언할 수 있다. 배열도 유도형 타입의 일종이며 따라서 배열 그 자체가 배열의 요소가 될 수 있다. 부분 배열 (SubArray) : 다른 배열에 포함된 배열 전체 배열 (모배열) : 부분 배열을 배열 요소로 가지는 배열 배열이 내부적으로 어떻게 처리되는가에 따라서 큰 차이점이 발생하는데 바로 1. 첨자 연산 방법과 2. 부분 배열의 자격 문제가 달라진다. 다차원 배열에서는 부분 배열만 단독..

10장 포인터

10.1 포인터 연산 10.1.1 T형 포인터 포인터 메모리의 한 지점, 간단히 말해 번지값을 가지는 변수 어떠한 형태의 변수든지 반드시 메모리에 보관되며 모든 메모리는 번지를 갖고 있다. 따라서 이 변수의 번지를 가리키는 포인터 변수를 항상 선언할 수 있다. 임의의 타입 T가 있을 때 T형의 포인터 변수를 선언할 수 있다. int *, char*, double * 변수 선언 O 구조체, 공용체, 배열 포인터 O 포인터 선언 방식 int *i, j; // i는 포인터, j는 정수형 int* i, j; // i는 포인터, j는 정수형 int *i, *j; // i와 j 모두 포인터 10.1.2 포인터의 타입 대상체(object) 포인터가 가리키는 번지에 들어있는 값, 즉 포인터가 가리키는 실체 int *p..

9장 배열

9.1 배열 9.1.1 배열의 정의 동일한 타입을 가지는 변수들의 유한 집합 기본 형식 일반 변수 선언문과 동일하되 변수명 뒤에 [ ] 괄호(bracket)와 배열 크기 지정문이 온다 type 배열명[크기][크기]...; int ar[5]; // 크기가 5인 정수형 배열 ar ar[0] ar[1] ar[2] ar[3] ar[4] 9.1.2 배열의 특징 배열 요소의 번호인 첨자는 항상 0부터 시작 n번 학생의 성적을 출력할 때 : printf("%d번 학생 성적은 %d",n, ar[n-1]); ar[n]을 출력할 때 : printf("%d 번 학생 성적은 %d", n+1, ar[n]); 배열이 차지하는 총 메모리양은 배열의 크기에 배열 요소의 크기를 곱해서 구할 수 있다. 배열 크기 = sizeof(배열)..

8장 표준 함수

8.1 수학 함수 8.1.1 표준 함수 분류 함수 입출력 함수 printf, scanf, gets, puts, getch, putch 수학 함수 sin, cos, tan, pow, floor, ceil, hypot 문자열 함수 strcpy, strlen, strcat, strstr, strchr 시간 함수 time, asctime, clock 파일 입출력 함수 fopen, fclose, fseek, fread, fwrite 프로그램 제어 exit, abort, system 메모리 할당 malloc, free, realloc, calloc 기타 rand, delay 8.1.2 삼각 함수 수학적인 계산을 하는 삼수 #include 예제 sin #include #include void main(void) { ..

7장 기억 부류

7.1 지역변수 7.1.1 전역변수와 지역변수 기억 부류(Storage Class) 변수가 저장되는 위치에 따라 결정되는 변수의 여러 가지 성질을 의미 변수가 어디에 생성되는가에 따라 통용 범위와 파괴 시기 등의 특징이 결정 기억 부류 전역 지역 정적 레지스터 지정자 extern auto static register 저장 장소 정적 데이터 영역 스택 정적 데이터 영역 CPU의 레지스터 선언 위치 함수의 외부 함수의 내부 함수의 내부 함수의 내부 통용 범위 프로그램 전체 함수의 내부 함수의 내부 함수의 내부 파괴 시기 프로그램 종료시 함수 종료시 프로그램 종료시 함수 종료시 초기값 0으로 초기화 초기화되지 않음 0으로 초기화 초기화되지 않음 예제 Storage #include void func(); int..

6장 함수

6.1 함수의 구성원리 6.1.1 함수의 정의 함수는 프로그램을 구성하는 단위로서 프로그램의 부품 역할을 한다. 프로그램이 해야 할 일을 각 부품들(=함수)이 나누어 맡으며 그 중에서도 가장 핵심이 되는 함수(=main)의 통제 아래 모든 함수들이 체계적으로 실행되어 전체적으로 프로그램이라는 하나의 완성을 이루는 것이다. 함수의구분 표준 함수 사용자 정의 함수 6.1.2 함수 사용자 정의 함수 기본 형식 type name(인수 목록) { 함수의 본체 } name 함수의 이름 이 이름을 통해 함수를 호출 함수의 의미를 잘 표현할 수 있는 이름으로 정해줘야 함 인수 목록 함수가 해야 할 일의 세부 사항을 지정 함수에게 일을 시키기 위해서는 작업에 필요한 값을 전달 없을 수도 있고, 여러개 있을 수도 있음. ..

5장 연산자

5.1 산술 연산자 5.1.1 연산자의 종류 기능별 종류 연산자 산술 연산자 +,-,*,/,% 부호연산자 +,- 대입 연산자 = 복합 대입 연산자 관계 연산자 ==, !=, 증감 연산자 ++, -- 포인터 연산자 *, &, [] 구조체 연산자 . -> 논리 연산자 ||, &&, ! 비트 연산자 |, &, ~, >>, = 9)*7, low+'0'+(low>9)*7); } } 5.3 기타 연산자 5.3.1 삼항 조건 연산자 변수나 상수, 함수 호출문 등 논리값을 리턴하는 모든 식에 올 수 있다. 사용 예 (조건식) ? 값1:값2 예제 samhang #include void main() { int i=3, j=4, k=0; k=(i>j) ?i:j; printf("큰 수=%d\n", k); } 5.3.2 ..