검색결과

'구름사다리: 공부방/C언어'에 해당되는 글 17건

인터페이스

2004/12/13 20:57
Ⅰ 개념
1. 두 개의 서로 다른 대상간의 공통된 경계
2. 라이브러리의 구현과 그 라이브러리를 사용하는 프로그램간의 경계
3. 라이브러리를 구현하는 프로그래머와 라이브러리를 사용하는 프로그래머간의 협약을 나타냄.
4. C에서 인터페이스는 전형적으로 header file(.h)로 표현됨

Ⅱ 라이브러리 개발
1. 인터페이스를 위한 헤더파일(.h)
2. 구현을 위한 소스파일(.c)

Ⅲ 인터페이스 구현
1. 하나의 인터페이스가 다양한 경로를 통해 여러 번 내포되더라도 컴파일러가 매번 다시 읽어들이지 않도록 하기 위해 이렇게 한다. name.h 라는 파일일 경우...

#ifndef _name_h
#define _name_h

내용

#endif
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/12/13 20:57 2004/12/13 20:57


  1. 아크몬드
    2004/12/13 21:22
    프로그래밍이군요..
    C 프로그래밍 시작하려고 하는데 어떤 책이 좋을까요?ㅎㅎ
  2. basecom
    2004/12/14 11:35
    저도 막 입문한 초보일뿐인데요;; 추천을 하자면 "C언어이야기" 라고 김중태란 분이 쓰신 책이 있는데 정말 쉽게 설명을 해놨지요. 입문서로썬 이게 최고라고 생각합니다.
Leave a Comment

파일

2004/12/13 07:03
Ⅰ 텍스트 파일와 이진 파일
1. 텍스트 파일(ASCII file)
① ASCII 문자들로만 구성되어진 파일.
② 연속된 모든 문자들이 일차원적으로 나열.( \n 등도 포함 )
③ EOF로 끝남

2. 이진 파일(binary file)
① 모든 데이터가 있는 그대로, 연속적으로 저장되어 있다.

Ⅱ C에서의 파일 제어 개념
1. C언어는 컴퓨터의 주변장치(키보드, 화면, 프린터 등)를 모두 하나의 파일로 취급한다.
2. 스트림(stream) :: C에서 입출력 동작을 수행할 때 사용하는 개념적인 데이터 이동 체계.
3. FILE* 타입의 변수를 선언해 사용 ( stdio.h 에 정의 )
① 실제 파일 처리를 관리하기 위해 시스템이 필요한 정보를 저장하는 사용됨
② 시스템마다 다양한 파일 시스템 구조의 차이를 극복할 수 있게 함
표준적인 조작 방법을 제공
4. C언어의 표준 스트림
① stdin :: 표준입력. 키보드
② stdout :: 표준출력. 화면
③ stderr :: 표준에러. 화면
④ stdprn :: 표준 프린터, 프린터
⑤ stdaux :: 표준 외부장치, 직렬포트

Ⅲ 파일 열고 닫기
1. fopen()
① filePointer = fopen( filename, mode );
② filename : 파일이름을 나타내는 문자열
③ mode : 데이터 전송 방식을 기술하는 문자열
ⓐ "r" :: read
- 읽기모드. 이미 존재하고 있는 파일이어야 한다.
ⓑ "w" :: write
- 쓰기모드. 존재하지 않으면 새로 생성. 존재하는 파일이면 overwrite
ⓒ "a" :: append
- 추가모드. 이미 존재하는 파일이면 덧붙여씀.

2. fclose()
① fclose( filePointer );
② open 한 파일은 반드시 close 하자!

Ⅳ 문자 입출력
1. getc()
① int getc( FILE *infile );
② 파일에서 한 문자를 읽어 그 값을 retrun.

2. putc()
① int putc( int ch, FILE *outfile );
② 지정한 파일에 한 문자(첫번째 인수)를 출력

Ⅴ 줄단위 입출력
1. fgets()
① char* fgets( char buffer[], int bufSize, FILE* infile );
② infile이 가르키는 파일의 내용을 읽어 buffer에 저장.
③ \n을 만나거나 bufSize만큼 읽을때까지.
④ 읽혀진 마지막 문자는 ‘\n’
⑤ buffer에 읽혀진 문자 다음에 ‘\0’ 삽입
⑥ 파일의 끝에서 호출되면 NULL을 리턴

2. fputs()
① void fputs( char* str, FILE* outfile);
② str이 가르키는 문자열의 내용을 outfile이 가르키는 파일에 write

Ⅵ 형식화된 입출력
1. printf()
① printf( control_string, … );
② 항상 표준출력(stdout)에 출력

2. fprintf()
① fprintf( output_stream, control_string, … );
② 첫번째 인수로 FILE* 를 취함. 그 파일에 출력

3. sprintf()
① sprintf( character_array, control_string,… );
② 첫번째 인수로 문자 배열(char *)을 취함. 그 배열에 출력

4. scanf()
① scanf( control_string, … );
② 항상 표준입력(stdin)에서 읽어들임

5. fscanf()
① fscanf( input_stream, control_string, … );
② 첫번째 인수로 FILE* 를 취함. 그 파일에서 읽어들임

6. sscanf()
① sscanf( character_array, control_string, … );
② 첫번째 인수로 문자 배열(char *)을 취함. 그 배열에서 읽어들임

7. scanf 계열 함수.
① 리턴값 :: 성공적으로 매칭되어 읽혀진 갯수
② 투명 문자(space, ‘\t’, ‘\n’)가 나타나면 scanf는 다음의 투명 문자가 아닌 문자 전까지 넘어간다
③ 숫자필드 크기(%기호뒤의..)는 필드에서 읽을 문자의 최대값을 나타냄

int: %d
float: %f(=%e =%g)
double: %lf
%c: 한 문자, 투명 문자도 읽어들임
%s: 첫 투명문자가 나오기 전까지의 문자열
%[ … ], %[^… ]
%[0123456789] : 숫자들을 문자열로 read
%[^.!?] :: ^뒤의 문자가 나오기전까지 read( ^뒤의 문자는 안읽는다.)
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/12/13 07:03 2004/12/13 07:03


Leave a Comment

함수들

2004/09/30 12:24
1. kbhit() 함수 - stdio.h
- 키가 눌러지면 1을, 눌러지지 않았으면 0을 반환한다.

2. sqrt() 함수 - math.h
- 인수의 제곱근을 구해준다.
- 프로토타입 :: double sqrt(double);

3. sin(), cos(), tan() 함수 - math.h
- 인수의 삼각함수 값을 구해준다. 인수의 단위는 라디안이다.
- 프로토타입 :: double sin(double);

4. abs() 함수 - math.h
- 인수의 절대값을 구해준다.

5. rand() 함수 - stdlib.h
- 난수를 발생시켜 돌려준다.
- rand();
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/30 12:24 2004/09/30 12:24


Leave a Comment

리스트 구조

2004/09/29 19:36
Ⅰ 리스트 구조의 개념
1. 자료들을 기억 장소의 불연속 공간에 저장시켜 놓고 포인터를 이용하여 각각의 자료들은 연결시키는 구조. 동적 메모리 관리가 가능하다.

2. 하나의 노드(node)는 크게 두 부분으로 나뉘는데, 첫 번째 부분엔 자료를 저장하고, 두 번째 부분에는 다음 자료의 시작 주소를 갖는 포인터 변수를 저장한다. 이때 사용되는 포인터 변수를 링크(link)라고 한다. 마지막 자료의 링크에는 '\0'을 저장한다.

3. 헤더 포인터(header pointer) :: 첫 번째 노드를 가리키는 포인터.

Ⅱ 동적 메모리 관리
1. 스토리지 풀(storage pool) = 힙(heap) :: 정적 영역과 스택 사이에 위치하는 곳. 사용자가 메모리를 요구하면 공급하고, 메모리 해제를 요구하면 다시 저장한다.

2. 동적 메모리 관리 함수 - in alloc.h

 ① malloc() 함수 - stdlib.h
  - memory allocation
  - 프로토타입 :: void *malloc( int nBytes );
  - malloc(size);
  - size 만큼의 영역(byte)을 확보하며, 그 시작주소를 반환한다. ( void형 포인터 )
  - 만약 할당하기 위한 충분한 공간이 없으면 NULL을 반환한다.
  - 기억 영역의 쓰임을 지정하기 위해 cast 연산자를 이용해서 리턴값을 전달받는 포인터 변수와 자료형을 일치시킨다.

 ② calloc() 함수
  - calloc(times, size);
  - size 바이트의 메모리 영역을 times개 만큼 확보한 뒤, 그 시작주소를 반환한다.
  - 지정된 영역을 확보하여 0 또는 '\0' 으로 초기화 한다.
  - 새로운 영역에 메모리가 확보되지 않을 경우는 NULL을 반환한다.
  - 기억 영역의 쓰임을 지정하기 위해 cast 연산자를 이용해서 리턴값을 전달받는 포인터 변수와 자료형을 일치시킨다.

 ③ realloc() 함수
  - 이미 확보되어 있는 메모리 크기를 변경한다.
  - realloc(block, size);
  - block :: malloc(), calloc(), realloc()에 의해 이미 할당되어 있는 메모리 영역에 대한 포인터.
  - size :: 새로 할당하고자 하는 메모리의 크기(byte).
  - 새로 확보된 메모리 영역의 포인터를 반환한다.

 ④ free() 함수
  - malloc(), calloc(), realloc()에 의해서 확보되었던 메모리 영역을 해제해 다시 자유 공간으로 만드는 함수.
  - free(block);
  - block :: 해제할 메모리 영역의 포인터.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 19:36 2004/09/29 19:36


Leave a Comment

구조체와 공용체

2004/09/29 19:15
Ⅰ 구조체(structure)
1. 여러 가지 자료형의 변수를 묶어놓은 집합적인 자료형.
2. 구조체의 선언 :: 뼈대를 만드는 것. 메모리 공간에 할당되기 위해선 정의를 해야한다.
일반적으로 함수 외부에서 선언한다.
struct name
{
    type member_name;
    type member_name2;
};

typedef struct
{
    int x;
    int y;
} new_name;

3. 구조체의 정의 :: 메모리 공간에 생성해 사용할 수 있게 만드는 것.
 ① 선언과 동시에 정의하기
 struct name
 {
    type member_name;
    type member_name2;
 } first, second;

 ② 나중에 정의하기
 struct name first, second;

 * 두 가지 경우 모두 first, second 라는 이름을 갖는 구조체형 변수가 정의된다.

4. 구조체의 초기화
struct sale
{
    char customer[20];
    char item[20];
    double amount;
} mysale = { "info book", "DOS guide", 100.5 };

 * 정의할 때만 가능하다. 나중에 초기화할 땐 멤버별로 해야한다.

5. 구조체 멤버
 ① 구조체의 중괄호 안에 포함된 변수. 메모리에 연속적으로 저장된다.
 ② 구조체 멤버의 사용 :: 구조체 연산자인 마침표(.)를 이용한다. 일반 변수처럼 사용이 가능하다. struct_name.member_name

6. 구조체 포인터
 ① 함수의 인수로 구조체형 변수를 전달 할 때 유용하다.
 ② 구조체 포인터 연산자 -> :: (*p_part).number 와 p_part->number 는 같다.

7. 구조체의 응용
 ① 구조체는 일반적인 변수 외에도 배열, 포인터, 구조체형 변수를 멤버로 포함할 수 있다.

Ⅱ 공용체(union)
1. 동일한 메모리 영역을 여러 개의 자료형이나 변수가 공유하게 해준다.
2. 선언, 정의, 초기화, 멤버 사용 방법은 공용체와 동일하다.
3.
union REG
{
    int ax;
    char ah;
} AREG;

Ⅲ 열거형 데이터 타입(enum)
1. 변수가 갖을 수 있는 값의 범위를 한정한다.
2. enum name { zero, one, two, three };
3. zero, one, two, three는 문자열이 아니라 정수의 이름이다.
4. 제일 처음에는 0, 그 다음에는 1 순으로 정수 상수값이 부여된다.
5. 중간에 어떤 값을 100으로 지정한다면 그 뒤에는 101, 102 순으로 값이 부여된다.
6. 사용자가 임의로 값을 줄 수도 있다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 19:15 2004/09/29 19:15


Leave a Comment

문자와 문자열

2004/09/29 19:10
Ⅰ 문자
1. ASCII(아스키)코드 :: 영문자, 숫자, 구두점, 그 외의 기호나 부호를 포함하는 모든 문자를 모아서 0에서부터 255까지 번호를 부여한 기호체계.

2. 문자 관련 함수 in ctype.h
 ① isalpha(c) :: c가 문자이면 1을 반환.
 ② isupper(c) :: c가 대문자이면 1을 반환.
 ③ islower(c) :: c가 소문자이면 1을 반환.
 ④ isdigit(c) :: c가 숫자이면 1을 반환.
 ⑤ isxdigit(c) :: c가 16진수이면 1을 반환.
 ⑥ isspace(c) :: c가 공백 문자이면 1을 반환.
 ⑦ isalnum(c) :: c가 문자나 숫자이면 1을 반환.
 ⑧ ispunct(c) :: c가 구두 문자이면 1을 반환.
 ⑨ isprint(c) :: c가 프린트 가능한 문자이면 1을 반환.
 ⑩ isgraph(c) :: c가 프린트 가능한 문자이지만 공백이 아니면 1을 반환.
 ⑪ iscntrl(c) :: c가 제어 문자이면 1을 반환.
 ⑫ isascii(c) :: c가 아스키 코드이면 1을 반환.
 ⑬ toupper(c) :: 대문자로 변환.
 ⑭ tolower(c) :: 소문자로 변환.
 ⑮ toascii(c) :: ASCII 코드로 변환.

Ⅱ 문자열
1. C에서 문자열은 문자의 배열(array of character)로서 표현된다.
2. 문자열의 끝은 널(null)문자 '\0'로 표시한다.
3. char str[100] , char *str

Ⅲ 문자열 처리 함수
1. strlen() 함수 - string.h
 ① 문자열 길이 측정 함수.
 ② strlen(str);
 ③ 널문자를 포함하지 않는 문자열의 길이를 돌려준다.

2. strchr(), strrchr() 함수 - string.h
 ① 문자열 내에서 특정 문자를 탐색하는 함수.
 ② strchr(str, ch); , strrchr(str, ch);
 ③ str은 탐색할 문자열, ch는 찾고자 하는 문자.
 ④ 찾은 문자의 시작 주소를 리턴한다.
 ⑤ strchr()은 문자가 발견된 최초위치를, strrchr()은 문자가 발견된 최후위치를 리턴한다.

3. strcpy(), strncpy() 함수 - string.h
 ① 문자열을 복사하는 함수.
 ② strcpy(str1, str2); , strncpy(str1, str2, len);
 ③ str1 :: 복사 사본이 저장될 곳. str2 :: 복사 원본이 저장되어 있는 곳.
 ④ len :: 복사할 길이를 지정.
 ⑤ 복사된 문자열의 맨 처음 포인터를 돌려준다.

4. strcmp(), strncmp() 함수 - string.h
 ① 문자열을 비교하는 함수.
 ② strcmp(str1, str2); , strncmp(str1, str2, len);
 ③ str1, str2는 비교할 문자열의 포인터. len은 비교할 문자열의 길이.
 ④ 앞에서부터 한 문자씩 비교해서 같으면 널문자가 나올 때까지 계속 비교하고 다르면 ASCII코드를 뺀 값(str1 - str2)을 돌려준다.

5. strcat(), strncat() 함수 - string.h
 ① 문자열을 연결해주는 함수.
 ② strcat(str1, str2); , strncat(str1, str2, len);
 ③ str1문자열 끝에 str2자열을 연결시킨다.
 ④ len은 추가할 문자의 개수를 지정.

6. atoi(), atol(), atof() 함수 - stdlib.h
 ① stoi(str); 문자열str을 정수형(int)으로 변환해 돌려준다.
 ② atol(str); 문자열str을 long형으로 변환해 돌려준다.
 ③ atof(str); 문자열str을 부동 소수점형(double)으로 변환해 돌려준다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 19:10 2004/09/29 19:10


Leave a Comment

입출력 함수

2004/09/29 19:06
Ⅰ printf()함수 - stdio.h
1. printf( "control string", exp1, exp2, ... );
2. 큰 따옴표("")안에 있는 내용을 원하는 형태로 서식에 맞춰 화면에 출력한다.

* ESC문자
\a :: '삑' 하는 벨소리를 낸다.
\b :: 커서를 한 칸 앞으로 이동시킨다.
\n :: 줄바꿈 문자. C에서는 \r\n 한 효과를 보인다.
\r :: 커서를 현재 줄의 첫 번째 칸으로 이동시킨다.
\t :: 탭
\\ :: '\'를 표시한다.
\' :: 작은따옴표(')를 표시한다.
\" :: 큰따옴표(")를 표시한다.
\0 :: NULL문자. 문자열의 끝을 나타내기 위해 사용.
\ddd :: 8진수로 ASCII 코드값을 부여할 때 사용.
\xddd :: 16진수로 ASCII 코드값을 부여할 때 사용.

* 형식 코드(format code)
%d :: 10진 정수, int형
%u :: 10진 정수, unsigned int형
%o :: 8 진수
%x :: 16 진수, 대문자 X를 쓰면 대문자로 출력한다.
%ld :: 10진 정수, long형
%lu :: 10진 정수, unsigned long형
%lo :: 8진수, long형
%lx :: 16진수, long형
%f :: 부동소수점
%e :: 과학적 기수법으로 출력. 대문자 E를 쓸 경우, E가 지수로 찍힌다.
%g :: %f와 %e 중에서 짧은 것을 선택해 출력. 대문자 G를 쓸 경우, G가 지수로 찍힌다.
%c :: 문자
%s :: 문자열. 배열명의 가리키고 있는 지점부터 널문자를 만날때까지 출력하라는 의미.
%% :: 퍼센트 부호(%)출력.

3. 필드 너비 :: 출력 필드에서 사용되는 최소한의 문자 수. 값이 더 크면 필드가 확장된다.부동소수점형의 필드 너비는 소수점(.)과 소수점이하의 수를 모두 포함한다.

4. 줄맞춤 :: 마이너스(-)부호가 있으면 왼쪽으로 정렬되고, 없으면 오른쪽으로 정렬된다.
* 예) %-6d -> 123 _ _ _


5. 정밀도 :: 자료형에 따라 달라진다.
 ① 부동소수점형의 경우에 소수점 이후의 자리수의 개수를 지정한다.(반올림 기능있다.)
* 예) %6.4f -> 3.1416

 ② 문자열형의 경우 최대 문자 수를 지정한다.

Ⅱ scanf() 함수 - stdio.h
1. scanf( "format code", address, ... );
2. format code에 맞는 데이터를 키보드로부터 읽어들이고, address에 저장한다.
3. address에는 일반 변수의 경우 번지연산자 &를 붙여야한다.
4. 입력의 끝은 공백 혹은 enter다.
5. format code에 길이를 지정할 경우. 해당 길이만큼 입력받는다.
6. 공백이 있는 문자열을 입력받기 위해서는 %c형식으로 format code를 지정한다.

Ⅲ 문자 입·출력 함수
1. putchar() 함수 - stdio.h
 ① putchar(ch);
 ② 인수 ch(한 문자)를 화면에 출력한다.
2. putch() 함수 - conio.h
 ① 한 문자를 출력한다.
 ② 이 함수에서 '\n'은 단순히 커서를 다음 줄로만 이동시킨다.

3. getchar() 함수 - stdio.h
 ① getchar();
 ② 키보드로부터 한 문자를 읽어들여 입력된 문자의 ASCII값을 리턴한다.
 ③ 엔터를 쳐야한다.
4. getch() 함수 - conio.h
 ① 입력된 문자의 ASCII값을 돌려준다.
 ② 화면에 입력된 문자가 보여지지 않는다.
 ③ 엔터를 치지 않는다.
5. getche() 함수 - conio.h
 ① 입력된 문자의 ASCII값을 돌려준다.
 ② 화면에 입력된 문자가 보여진다.
 ③ 엔터를 치지 않는다.

Ⅳ 문자열 입·출력 함수
1. puts() 함수 - stdio.h
 ① puts(array_name);
 ② array_name의 문자열을 널문자가 나올 때까지 화면에 출력한다.
 ③ 끝에 자동으로 '\n'를 추가한다.
2. cputs() 함수
 ① 이 함수에서 '\n'은 단순히 커서를 다음 줄로만 이동시킨다.

3. gets() 함수 - stdio.h
 ① gets(array_name);
 ② 키보드에서 입력된 문자열을 array_name에 저장한다.
 ③ 배열을 먼저 선언해 놓고 사용한다.
 ④ 입력의 끝은 enter뿐이다. (공백도 자유로이 입력 가능하다.)
4. cgets() 함수
 ① 배열을 먼저 선언해 놓고 사용한다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 19:06 2004/09/29 19:06


Leave a Comment

포인터(pointer)

2004/09/29 14:52
Ⅰ 포인터
1. 번지(메모리주소). 즉, 변수에 번지연산자(&)를 붙인 연산결과는 포인터 상수이며, 이것을 값으로 갖는 변수를 포인터 변수라 한다.

2. 포인터변수의 선언 :: 포인터 연산자(*)를 사용해야 한다.
 base-type *variable_name;

 ① base-type :: 포인터 변수의 자료형은 포인터 변수 자체의 자료형이 아니라 포인터 변수가 가리키는 주소에 저장된 값의 자료형이다. 데이터를 사용하기 위해 컴파일러는 그것을 어떻게 해석해야 하는지를 알아야하기 때문.

3. 번지연산자 & :: Lvalue 값에 대해 그 값이 저장되어 있는 메모리의 주소를 넘겨준다.(시작주소)

4. 간접연산자 *
 ① 포인터변수에 저장된 번지의 내용물을 알려준다.
 ② 피연산자는 언제나 포인터(번지값)이어야 한다.

5. 포인터의 포인터 :: 번지를 값으로 가지는 변수의 번지를 가르킨다.

6. 포인터 사용의 장점
 ① 포인터를 사용하면 번지 안에 저장된 내용을 조작할 수 있으며, 번지를 다루기가 쉽다.
 ② 포인터는 함수의 인수로 여러 개의 요소를 갖는 배열을 전달하거나 여러개의 결과 값을 돌려줄 때 유용하게 쓰인다.
 ③ 큰 데이터 구조를 간단한 방법으로 참조할 수 있다.

7. 주의!! :: 주소값을 지정하지 않은채 포인터 변수가 가르키는 주소에 저장된 값을 사용하면 안된다. 주소가 쓰레기값이기때문.

8. NULL 포인터
 ① stdlib.h에 정의된 상수 ( = 0 )
 ② 포인터 변수가 유효한 데이터를 가리키고 있지 않다는 것을 나타낸다.
 ③ 이 값을 가지는 포인터 변수도 *연산자를 사용할 경우, 실제 0번지의 값에 영향을 줄 수 있다.

Ⅱ 포인터 연산
1. 포인터 변수에 저장된 주소값을 변경하는 연산동작.

2. 포인터의 값을 증감시킬 때 실제로 증감되는 주소는 포인터 변수가 가르키는 자료형에 따라 달라진다.
 - 예) 정수형변수에 2바이트의 공간을 할당해주는 시스템에서 정수형 포인터 변수 p 에 1을 더하면 실제 증가되는 주소값은 2가 된다.

3. 포인터간의 뺄셈 :: 두 포인터 변수가 가르키는 주소 사이에 몇 개의 배열 요소가 존재하는지 알려준다. 같은 배열을 가르키고 있을때만 의미가 있다.
 - 예) p1 = &f[0], p2 = &f[2] 일 때, p2-p1 은 2이다.

4. 관계연산자를 사용할 수 있다. (동일한 자료형만 비교가능.)

5. 산술연산자 '*', '/', '%' 는 포인터 변수를 피연산자로 취할 수 없다.

Ⅲ 포인터와 배열
1. 배열명은 그 배열의 선두번지를 가리키는 포인터이다.
2. 2차원배열에서 array는 각 행의 선두번지를 가리키는 포인터이다.
3. 배열연산의 대부분은 포인터연산을 통해 이루어 진다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 14:52 2004/09/29 14:52


Leave a Comment

메모리

2004/09/27 12:48
Ⅰ 데이터의 내부 표현
1. 비트(bit) :: 하나의 값만을 기록할 수 있다. 0 또는 1.
2. 바이트(byte) :: 한 글자를 저장할 정도의 크기. 보통 8bit.
3. 워드(word) :: 하나의 정수 값을 저장할 수 있을 정도의 크기. 컴퓨터가 한꺼번에 처리할 수 있는 자료의 크기.

Ⅱ 메모리 구조
1. 컴퓨터의 주기억장치인 메모리는 데이터의 저장 영역이다.
2. 메모리 영역의 위치는 번지에 의해 구분되며, 주소는 byte단위로 0부터 컴퓨터에 설치된 메모리의 양까지 순서대로 부여된다.
3. 변수를 선언하면 컴파일러는 변수에 값을 저장할 수 있도록 메모리 공간을 할당한다.
4. 배열을 선언하면 필요한 메모리 공간을 연속적으로 할당한다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/27 12:48 2004/09/27 12:48


Leave a Comment

배열(array)

2004/09/27 12:46
Ⅰ 배열(array) :: 동일한 자료형과 이름을 갖는 집단적인 데이터 저장 영역. 변수가 단독주택이라면 배열은 공동주택이다.

Ⅱ 배열의 선언 :: type array_name[ size ];
1. type :: 배열 각 요소의 타입
2. array_name :: 배열로 선언되는 변수 이름
3. size :: 배열 요소 개수

Ⅲ 배열의 초기화 :: 선언 시에만 된다.
1. int array[3] = { 1, 2, 3 };
2. 배열요소 중 하나라도 초기화하면 나머지는 0으로 초기화된다.
3. 초기화를 안 했을 경우 정적 배열, 외부 배열은 모든 요소가 0으로 자동 초기화된다.
4. 배열크기의 자동결정 :: int array[] = { 1, 2, 3, 4, 5 };

Ⅳ 배열의 선택
1. 선택(selection) :: 배열의 특정 요소를 식별하는 과정.
2. 선택식(selection expression) :: array_name[ index ], 단순변수처럼 행동.
3. index는 0부터 시작한다는 것에 주의해야한다.

Ⅴ 배열의 크기, 요소 개수
1. 배열의 크기 계산 :: sizeof(array_name);
2. 배열의 요소 개수 계산 :: sizeof(array_name) / sizeof(array_name[0]);

Ⅵ 다차원 배열 :: 차원에 제한은 없지만 보통 2차원까지만 사용된다.
1. 다차원 배열의 선언 :: type array_name[][]... ;
2. 다차원 배열의 초기화
 ① int matrix[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
 ② int matrix2[2][2][2] = { { { 1, 2 }, { 3, 4 } } , { { 5, 6 } , { 7, 8 } } };
 ③ int matrix3[][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 }, { 5, 5, 5 } };
 * 다차원 배열의 두 번째 이후 배열요소의 크기는 생략하면 안 된다.
3. 다차원 배열도 메모리에 저장될 땐 한 줄로 저장된다.

Ⅶ 배열의 함수 매개변수 전달
1. 번지에 의한 참조 방식. 배열의 이름은 포인터 상수다.
2. 배열을 받는 함수 헤더
 ① int GetInteger( int array[], int n );
 ② void DisplayBoard( char board[][3] );
  * 필요할 경우 배열의 요소개수도 넘겨준다.
  * 다차원 배열의 두 번째 이후 배열요소의 크기는 생략하면 안 된다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/27 12:46 2004/09/27 12:46


Leave a Comment
블로그이미지
About
basecom

Recent Trackback




286929
Today : 72   Yesterday : 282