변수
변수의 속성
이름, 타입, 크기, 값 + 범위, 생존 시간, 연결
- 범위(scope) : 변수가 사용 가능한 범위, 가시성
- 생존 시간 : 메모리에 존재하는 시간
- 연결 (linkage) : 다른 영역에 있는 변수와의 연결 상태
범위
- 파일 범위
- 함수 범위
- 블록 범위
- 함수 원형 범위
생존기간
- 정적 할당(static allocation) : 프로그램 실행 시간 동안 계속 유지
- 자동 할당(automatic allocation) : 블록에 들어갈 때 생성, 나올 때 소멸
- 생존 기간을 결정하는 요인 : 변수가 선언된 위치, 저장 유형 지정자
- 저장 유형 지정자
- auto
- register
- static
- extern
저장 유형 지정자 auto
- default
저장 유형 지정자 static
저장 유형 지정자 register
- 레지스터에 변수를 저장
저장 유형 지정자 extern
컴파일러에게 변수가 다른 곳에서 선언되었음을 알린다.
연결
- 다른 범위에 속하는 변수들을 서로 연결하는 것
- 외부 연결
- 내부 연결
- 무 연결
- 전역 변수 만이 연결을 가질 수 있다.
- static 지정자를 사용한다.
- static이 없으면 외부 연결,
- static이 있으면 내부 연결.
연결은 흔히 다중 소스 파일에서 변수들을 연결하는데 사용된다.
함수 앞의 static
static이 붙는 함수는 파일 안에서만 사용할 수 있다.
저장 유형 정리
- 일반적 -> 자동 저장 유형 사용 권장
- 자주 사용되는 변수는 레지스터 유형
- 변수의 값이 함수 호출이 끝나도 그 값을 유지하여야 할 필욕 있다면 지역 정적
- 만약 많은 함수에서 공유되어야 하는 변수라면 외부 참조 변수
순환이란 ?
- 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법
순환 알고리즘의 구조
- 순환 알고리즘은 순환 호출을 하는 부분 / 순환 호출을 멈추는 부분을 구성
순환 < - > 반복
거듭제곱값 구하기
피보나치 수열의 계싼
하노이탑 문제
배열
인덱스 - 배열의 원소 번호
배열의 복사
for ( i = 0; i < SIZE; i++) b[i] = a[i];
배열 원소 개수 자동 계산
size = sizeof(grade)/ sizeof(grade[0]);
sizeof(array)로 배열 전체의 바이트 수를 구하고 sizeof(array[0])으로 배열 첫 번째 요소의 크기의 바이트 단위로 구합니다. 이것을 나누면, 배열의 요소 개수가 나옵니다.
#include <stdio.h>
#define SIZE 10
int main(void)
{
int grade[SIZE];
int i, min;
for (i = 0; i < SIZE; i++)
{
printf("성적을 입력하시오:");
scanf("%d", &grade[i]);
}
min = grade[0];
for (i = 1; i < SIZE; i++)
{
if(grade[i]<min)
min = grade[i];
}
printf("최솟값은 %d입니다.\n",min);
return 0;
}
# >
원본 배열의 변경을 금지하는 방법
const -> 배열 원본의 변경 금지.
정렬이란 ?
- 물건을 크기 순으로 오름차순이나 내림 차순으로 나열하는 것
선택 정렬이란 ? (selection sort)
- 선택정렬 : 정렬이 안된 숫자들 중에서 최솟값을 선택하여 배열의 첫 번째 요소와 교환
코드 예제 참조
버블정렬이란 ?
- 인접한 레코드가 순서대로 되어 있지 않으면 교환
- 전체가 정렬될 때까지 비교 / 교환 계속
순차 탐색
이진 탐색
정렬된 배열의 중앙에 위치한 원소와 비교 되풀이
2차원 배열
2차원 배열은 1차원적으로 구현된다.
다차원 배열
참고자료