본문 바로가기

프로그래밍/C 프로그래밍

[C언어] C언어의 개요

# C언어란

😊사람 - (C언어) - ✍️컴파일러 - (어셈블러) - 🖥️컴퓨터

C언어는 프로그래밍 언어이며, 프로그래밍 언어란 인간과 컴퓨터의 대화에 사용되는 의사소통 수단이다.
즉, 사람과 컴파일러가 이해할 수 있도록 약속된 형태의 언어다.



C언어는 논리적이고 구조적이며, 하드웨어 제어와 프로그램 이식성이 용이하다.

  • 저급언어의 특성을 갖는 고급 언어이다.
  • C언어의 모든 프로그램은 .c 확장자를 갖는다.

※ 소스코드(source code) : 프로그램 안에 있는 명령어

  • 또한, 실제로는 컴파일러(compiler) 와 컴퓨터 사이에 어셈블러라는 통역가가 있다.

  컴파일러는 컴퓨터가 이해할 수 있도록 기계어로 번역하는 역할을 수행한다.

  • 소스 프로그램을 한 번에 기계어로 변환한다.
  • 어셈블러(assembler) : 기호로 표현된 어셈블리 코드를 기계어로 번역
  • 인터프리터 : 프로그램을 한 단계식 기계어로 해석하여 실행하는 '언어처리 프로그램'

# 3단계 완성 과정

editing 👉compile👉linking👉execute

  1. 코딩 단계 : 주어진 문제에 대한 설계를 바탕으로 소스코드를 작성하여 소스 파일(.c) 을 생성한다.
  2. 컴파일 단계 : 소스 파일이 목적 파일(object file)(.obj)로 변환된다
    • 목적 파일은 컴퓨터가 이해할 수 있는 기계어들의 집합(0과 1)으로 변경된 상태
    • 목적 파일은 그 자체로는 큰 의미를 갖지 못하고 라이브러리라는 파일과 연결되어 하나의 프로그램이 됐을 때만 의미가 있다.
    • 따라서 이러한 목적 파일을 서로 연결하기 위해 링킹(linking)이 필요하다.
  3. 링킹 단계 : 목적 파일을 실행 파일(.exe)로 변환한다.
    • 컴파일된 목적 파일들을 라이브러리 파일과 연결하여 실행 파일을 만들어 내며, 이때 사용되는 도구가 '링커(linker)'이다.
    • 컴파일할 때 링킹 과정이 자동적으로 처리된다.

# C 프로그램의 구성

// 도입부
//  프로그램 전체에 적용되는 사항 기술
// ex. 선언문, 프로그램 전체에 사용되는 전역 변수
void main() {

// 가장 먼저 호출되는 함수로 모든 프로그램에 반드시 존재해야 한다.
}

function () {
// 사용자 정의 함수
}

※ 예약어(reserved word) : C 언어에서 미리 정의되어 있는 단어

 

  • C 프로그램의 블록은 중괄호({})로 이루어진다.
  • 선행처리기가 처리하는 명령을 제외한 모든 문장 끝에는 세미콜론(;)이 붙는다.
  • 사용자 명칭(변수)는 규칙에 따라 만들어 사용해야 하며, 예약어는 사용 불가능하다.

예약어

  • 자료형 관련 예약어: int, char, float, double, unsigned, union, enum, void
  • 기억 관련 예약어: auto, static, extern, register
  • 제어 관련 예약어: if~else, break, continue, return
  • 기타 예약어: main, sizeof, include

# 자료형

> 프로그램에서 사용하는 자료의 형태, 상수변수로 구분하여 사용

1. 상수

✔️ 항상 고정된 값을 갖는 자료

✔️ 값이 정해지면 프로그램 도중 그 값을 변경할 수 없는 수

  • 정수형 상수 : 10진수, 8진수, 16진수 등
  • 실수형 상수(=부동소수점형 상수) ; 기본 double 형
  • 문자형 상수: 단일 인용부호 (' ')로 묶인 1개의 영문자나 숫자.
    • 내부적으로 ASCII 코드값이 사용된다.
    • 특히 키보드에 나타나 있지 않은 문자를 escape 문자라고 한다.
      \a 경고음 출력
      \b 백스페이스
      \f 새 페이지(form feed)
      \n 출력 시 줄 바꿈(new line)
      \r 커서를 행의 시작 위치로 이동(carrige return)
      \t 수평 탭 (tab)
      \0 ASCII 코드 값이 0인 문자(null)
  • 문자열 상수: (" ")로 묶인 복수개의 영문자와 숫자
    • 문자열 상수가 기억공간에 보관될 때는 문자열 끝에 null(\0)이 추가된다.

2. 변수

변수는 프로그램 실행 도중 변할 수 있는 값이 저장되는 기억공간.

변수를 사용하기 전에는 반드시 그 변수를 선언하여 컴파일러가 기억공간에서 일정 공간을 확보할 수 있도록 해야한다.

변수의 규칙

  • 변수명은 반드시 영문자나 밑줄(_)로 시작해야 한다.
  • 변수명은 중간에 밑줄 이외의 특수문자를 섞어서 명명할 수 없다.
  • 변수명은 대소문자를 구별하여 사용한다.
int a, b;
a = 100;
b = 50;

//  a와 b라고 명명된 기억공간에 대입(저장)하라는 의미이다.

 

8진수, 16진수의 지정

8진수 숫자 앞에 0 입력 int octal_value = 010
16진수 숫자 앞에 0x 입력 int hex_value = 0xAC
#include <stdio.h>
int main(){
	int num1 = 104; //10진수 104 
	int num2 = 0150; // 8진수 150
	int num3 = 0x68; //16진수 68 
	// num1, num2, num3에 저장된 정수를 10진수로 출력 
	printf("num1에 저장된 정숫값은 : %d \n", num1);
	printf("num1에 저장된 정숫값은 : %d \n", num2);
	printf("num1에 저장된 정숫값은 : %d \n", num3);
}

 

열거형

  • 열거형은 변수가 가질 수 있는 값을 나열해 놓은 것 (값의 범위가 정해져 있는 경우에 사용)
  • 열거형은 제한적이나, 숫자 대신 단어를 사용할 수 있어 프로그램의 가독성을 높인다.
  • 열거형은 키워듸 enum을 사용하여 선언한다.
  • 열거자의 값은 디폴트로 첫 번째는 0이고, 각 원소는 이전 원소의 값보다 하나 더 큰 값을 갖는다.
  • 형식
    • enum 태그명 {열거자1, 열거자2, ...}
    • enum day {SUN,MON,..SAT};
#include <stdio.h>
int main(){
	enum day1 {SUN, MON, TUE, WED, THU, FRI, SAT} d1;
	enum day2 { sun = 2, mon, tue, wed, thu, fri, sat } d2;
	d1 = WED ;
	d2 = wed ;
	
	printf("열거형 d1 저장된 값은 %d \n", d1);
	printf("열거형 d2 저장된 값은 %d \n", d2);	

}

반응형

'프로그래밍 > C 프로그래밍' 카테고리의 다른 글

[C언어] 배열  (0) 2024.06.04
[C언어] 함수  (0) 2024.06.04
[C언어] 선택제어문/반복제어문  (0) 2024.06.04
[C언어] 입출력함수와 연산자  (1) 2024.06.04
[C] 선행처리기 매크로  (0) 2024.06.04