프로그래밍 프로젝트 (변수,배열)

변수

변수의 속성

이름, 타입, 크기, 값 + 범위, 생존 시간, 연결

  • 범위(scope) : 변수가 사용 가능한 범위, 가시성
  • 생존 시간 : 메모리에 존재하는 시간
  • 연결 (linkage) : 다른 영역에 있는 변수와의 연결 상태

범위

  • 파일 범위
  • 함수 범위
  • 블록 범위
  • 함수 원형 범위

생존기간

  • 정적 할당(static allocation) : 프로그램 실행 시간 동안 계속 유지
  • 자동 할당(automatic allocation) : 블록에 들어갈 때 생성, 나올 때 소멸
  • 생존 기간을 결정하는 요인 : 변수가 선언된 위치, 저장 유형 지정자
  • 저장 유형 지정자
    • auto
    • register
    • static
    • extern

저장 유형 지정자 auto

  • default

저장 유형 지정자 static

저장 유형 지정자 register

  • 레지스터에 변수를 저장

저장 유형 지정자 extern

컴파일러에게 변수가 다른 곳에서 선언되었음을 알린다.

연결

  • 다른 범위에 속하는 변수들을 서로 연결하는 것
    • 외부 연결
    • 내부 연결
    • 무 연결
  • 전역 변수 만이 연결을 가질 수 있다.
  • static 지정자를 사용한다.
  • static이 없으면 외부 연결,
  • static이 있으면 내부 연결.

연결은 흔히 다중 소스 파일에서 변수들을 연결하는데 사용된다.

함수 앞의 static

static이 붙는 함수는 파일 안에서만 사용할 수 있다.

저장 유형 정리

  • 일반적 -> 자동 저장 유형 사용 권장
  • 자주 사용되는 변수는 레지스터 유형
  • 변수의 값이 함수 호출이 끝나도 그 값을 유지하여야 할 필욕 있다면 지역 정적
  • 만약 많은 함수에서 공유되어야 하는 변수라면 외부 참조 변수

순환이란 ?

  • 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법

image

순환 알고리즘의 구조

  • 순환 알고리즘은 순환 호출을 하는 부분 / 순환 호출을 멈추는 부분을 구성

순환 < - > 반복

거듭제곱값 구하기

피보나치 수열의 계싼

하노이탑 문제

배열

인덱스 - 배열의 원소 번호

배열의 복사

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)

  • 선택정렬 : 정렬이 안된 숫자들 중에서 최솟값을 선택하여 배열의 첫 번째 요소와 교환

1

2

코드 예제 참조

버블정렬이란 ?

  • 인접한 레코드가 순서대로 되어 있지 않으면 교환
  • 전체가 정렬될 때까지 비교 / 교환 계속

default

순차 탐색

default

이진 탐색

정렬된 배열의 중앙에 위치한 원소와 비교 되풀이

default

2차원 배열

2차원 배열은 1차원적으로 구현된다.

다차원 배열


참고자료

프로그래밍 프로젝트

0%