[C언어] 기말고사

 



1. 배열

  1. 1배열은 같은 자료형의 데이터가 되어 있는 데이터 저장 장소로, 정수형, 문자형 등 같은 자료형에 배열 하나의 이름을 지정하여 선언할 수 있다.
  2. 2배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 아무런 의미를 가지지 않는 이 저장되기 때문이며 주의해야 한다.
  3. 3배열(array)은 같은 자료형의 데이터가 여러 개 저장되어 있는 데이터 저장 장소이기 때문에 배열 안에 각각의 원소를  처리 할 수 있다는 장점이 있다.
  4. 4배열을 초기화 하는 방법은 여러 가지가 있지만 사용자에게 입력 받아 반복문을 활용해 초기화 할 수 있고 할 수 있고 배수형태로도 초기화가 가능하다.


2. 배열과 문자열

  1. 1정수형 배열은 배열(array)에 정수형 데이터를 저장하는 것이고, C언어에서 배열 이름 앞에 자료형을 써야 하는데 이때 로 지정한 것이다.
  2. 2문자형 배열은 C언어에서는 char변수에는 문자 1개를 저장하고 로 표현한다.
  3. 3문자열 함수는 와 같은 함수로 문자열을 다루기 위한 함수들이 있고, 문자열 함수들을 포함하고 있는 라이브러리는 string.h 에 포함되어 있다.
  4. 4이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미하고, 2차원 배열은 배열 요소로 1차원 배열을 가지는 배열이며고 3차원 배열은 배열 요소로 2차원 배열을 가지는 배열이다.


3. 변수 및 배열의 메모리 할당과 스택

  1. 1데이터로 표현하면 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고 최신에 입력된 데이터는 가장 위쪽에 쌓이게 되는 구조로, 마치 더미를 쌓아 올린 모습과 흡사하기 때문에 이라고 부른다.
  2. 2정수형 변수의 크기는 이므로 정수형 변수 a를 선언하면 임의의 위치에 4바이트가 할당된다.
  3. 3정수형 배열은 배열 aa의 주소를 구할 때는 ‘&’를 쓰지 않고 단순히 로 표현한다.


4. 배열과 포인터

  1. 1포인터(pointer)는 프로그래밍 언어에서 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말하며, 라고도 부른다.
  2. 2포인터 변수는 일반 변수의 선언에서 변수명 앞에 ’*’를 붙여주며, 이렇게 선언하게 되면 포인터 변수로 선언이 되어 여기에 주소를 담을 수 있게 된다. 초기화를 해주지 않으면 다른 변수들과 마찬가지로 이 들어가 있기 때문에 초기화를 해주어야 한다.


5. 함수 1

  1. 1프로그래밍에서의 함수는 값을 넣어주면 함수내에서 덧셈 같은 비교적 간단한 연산부터 회원 인증과 같은 복잡한 작업을 수행하고 하는 것을 의미한다.
  2. 2함수를 사용하는 가장 큰 이유는  프로그래밍 쉽게 할 수 있기 때문이다.
  3. 3함수는 반환 자료형과 함수이름, 인수으로 표현되는데 이를 이라고 하고, 함수의 반환 자료형(return type)은 정수형(integer, int)이다.


6. 함수 2

  1. 1반환값(return value)은 호출된 함수가 호출한 곳으로 작업의 결과값을 전달하는 것으로 인수는 여러 개가 가능하나 반환값은 하다.
  2. 2함수 호출에서 종료까지 수행 원리를 살펴보면 함수가 호출되면 해당 함수에 필요한 변수가 메모리에 할당되는데 이때 생성되는 이 스택이다.
  3. 3라이브러리 함수는 컴파일러에서 제공하는 함수이고, 는 규칙성이 없이 임의로 생성되는 수이다.


7. 기억클래스 : 지역 변수, 전역 변수, 정적 지역 변수, 레지스터 변수

  1. 1지역변수란 이름에서 느끼듯이 한 지역 내에서만 사용할 수 있는 변수로, 지역이란, 에 의해 만들어지는 영역을 뜻한다.
  2. 2는 지역변수와 반대로 어느 지역에서나 사용할 수 있는 변수이고, 블록(괄호) 안에 쓴 변수가 지역변수였다면, 블록 밖에 쓴 변수는 전역변수이다.
  3. 3C언어에서 란 static 키워드로 선언한 변수를 의미하며, 이렇게 선언된 정적 변수는 지역 변수와 전역 변수의 특징을 모두 가지게 된다. 함수 내에서 선언된 정적 변수는 전역 변수처럼 단 한 번만 초기화되고 프로그램이 종료되면 메모리상에서 지워진다.
  4. 4란 지역 변수를 선언할 때 register 키워드를 붙여 선언한 변수를 의미하고, 이렇게 선언된 레지스터 변수는 CPU의 레지스터(register) 메모리에 저장되어 빠르게 접근할 수 있게 된다.


8. 표준 입출력

  1. 1필요한 표준 입출력 함수를 사용하기 위해서는 반드시 와 같이 표준 입출력 함수를 포함시킨 후 사용하여야 한다. stdio의 의미는 표준 입력(standard input)과 표준 출력(standard output) 이다.
  2. 2gets(문자 배열)은 표준 입력 장치(키보드)로부터 만큼 문자열을 입력받으며, 숫자를 입력해도 무조건 문자열로 취급한다.
  3. 3문자 입력 함수는 getch(), getche(), getchar() 등이 있으며, 는 putchar(문자형변수), putch(문자형변수) 등이 있다.


9. 고급 포인터

  1. 1변수나 배열의 메모리 할당은 이라고 한다. 정적 할당은 만약 처음 int형 배열에 100개의 데이터를 넣으려 선언을 하고 나서 보니 실제 프로그램을 실행하다 보니 int배열이 50개만 필요한 경우가 발생하면 메모리가 낭비된다.
  2. 2동적 메모리 할당은 컴퓨터 프로그래밍에서  동안 사용할 메모리 공간을 할당하는 것을 말한다.
  3. 3프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해주는데 할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역, 으로 나눠진다.
  4. 4동적 메모리 확보 개념인 는 함수 호출시 할당하고자 하는 메모리의 크기(size)를 바이트 단위로 힙영역에 그 크기만큼 메모리를 할당하게 된다.
  5. 5이미 할당한 공간의 크기를 바꿀 때 를 사용하고, realloc 함수는 동적 메모리 확보 개념이다


10. 포인터 배열

  1. 1이란 배열 요소로 포인터 변수를 가지는 배열을 의미하는데 포인터 변수를 저장할 수 있는 배열을 의미한다.
  2. 2포인터 배열을 사용하는 이유는 일반적으로 여러 문자열을 입력 받으면 2차원 배열을 사용하는데 입력한 글자의 길이가 일정치 않아 적절한 배열의 크기를 설정하기 어렵기 때문에 포인터 배열을 이용하면 를 줄일 수 있다.
  3. 3메모리의 동적할당은 많은 기억공간을  할당 받아서 배열로 사용하는 것이 효율적이다.
  4. 4메모리 동적 할당을 사용하면 입력되는 문자열의 길이에 맞게 을 할당할 수 있다.


11. 구조체, 공용체와 열거형

  1. 1란 사용자가 사용자 정의형을 만들 수 있는 사용자 정의 타입으로, 서로 다른 데이터형의 변수들을 하나로 묶어서 사용하는 기능이다.
  2. 2구조체의 정의와 구조체 변수의 선언을 동시에 할 수도 있고, C언어의 는 이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다.
  3. 3배열의 경우와는 달리 구조체의 이름은 구조체를 가리키는 주소가 아니어서 포인터에 할당할 때에는 반드시 주소 를 사용해야 한다.
  4. 4는 union 키워드를 사용하여 선언하며, 한 가지를 제외한 모든 면에서 구조체와 같으며, 다른점은 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 것이다.
  5. 5는 새로운 타입을 선언하면서, 동시에 해당 타입이 가질 수 있는 정수형 상수값도 같이 명시할 수 있는 타입이다.


12. 표준라이브러리 함수

  1. 1C표준 라이브러리는 매크로, 타입 정의 그리고 문자열 처리나 수학적 연산, 입출력 프로세스, 메모리 할당과  서비스 같은 작업을 위한 함수들을 제공한다.
  2. 2C 프로그래밍 언어는 표준 라이브러리에 문자열 관련 명령을 구현하는 여러 함수들이 존재한다. 과 같은 다양한 명령이 지원된다.
  3. 3문자열 복사 함수는 memcpy(), memmove(), 는 strcat() 등이 있다.
  4. 4문자열 비교 함수는 memcmp(), 는 strlen()이 있다.


댓글 쓰기

다음 이전

POST ADS1

POST ADS 2