본문 바로가기
[C language] C 언어

c언어 총정리1 - 기본

by codeomni 2023. 8. 30.
반응형

 

C언어 기본

1971년 유닉스라는 운영체제를 개발하기 위해 데니스 리치와 켄 톰슨이 함께 설계한 범용적인 고급 언어(High-level) 언어

유닉스는 어셈블리 언어라는 저급(low-level) 언어로 만들어졌기 때문에 하드웨어의 의존도가 높았다. (이식성이 낮다)

-> cpu의 종류가 바뀌면 다시 작성

절차지향적 특성 – 정해진 순서의 실행흐름 중시

이식성이 좋다 – cpu의 종류에 상관없이 실행, 운영체제의 차이에 덜 민감

좋은 성능 – 성능에 민감한 소프트웨어의 개발에 주로 사용, 메모리의 양이 상대적으로 적고, 속도를 저하시키는 요소들을 최소화한 언어.

작성, 실행 방법

  1. 프로그램 작성
  2. 컴파일(Complie)
  3. 링크(Link)
  4. 실행파일 생성

c프로그램을 이루는 파일의 종류는 소스파일과 헤더파일 등으로 나눔
작성 시 .c로 하지 않으면 .cpp로 c++문법을 기준으로 컴파일 된다.

 

Hello world!

프로그램의 기본 구성
c언어 기본 단위인 함수의 이해
c언어로 프로그램 작성은 함수를 만들고, 실행순서를 결정
함수(function) – 입력에 따른 출력이 존재
함수의 정의 – 만들어진 함수, 실행이 가능한 함수
함수의 호출 – 함수의 실행을 명령하는 행위
인자의 전달 – 함수의 실행을 명령할 때 전달하는 입력의 값

프로그램 실행 시 main의 이름의 함수를 찾아 호출.

함수의 시작 형태
출력형태 함수이름 입력형태
{
함수의 몸체
}
int main(void){ -> 출력의 형태가 int이고 입력의 형태가 void인 main이라는 이름의 함수
함수의 몸체
}
출력의 형태는 함수임을 강조 시 사용하고, 반환형(return type)을 사용한다.

세미콜론(;) - c언어에서 문장의 끝을 표현하기 위해 사용, 컨트롤 문장(조건문과 반복문)에서는 사용X

 


표준 라이브러리

표준 함수는 직접 만들지 않아도 호출이 가능한, 기본적으로 제공하는 함수이다.

함수의 호출문에서 소괄호 안에는 함수호출 시 전달할 인자정보를 표현한다.

c언어는 많은 수의 표준함수를 제공한다.

이런 함수들의 모임이 표준 라이브러리이다.

 


헤더파일

표준함수의 호출을 위해 관련 함수와 관련 잇는 헤더파일을 선언이 필요하다.

ex) printf는 stdio.h 헤더파일이 필요하다.

1
#include <stdio.h>

 

확장자가 .h로 끝나는 헤더파일을 포함하라는 의미의 선언이다.

필요 시 여러 헤더파일을 삽입할 수 있다.

단, 헤더파일의 선언은 소소파일의 맨 앞부분, main 함수 정의 이전에 선언해야 한다.

 

 

return

함수를 호출한 영역으로 값을 반환(전달)하거나 현재 실행중인 함수의 종료를 의미한다.

1
return 0;

 

main 함수를 호출한 영역으로 0을 전달하여 함수를 빠져나간다.( main 함수의 종료로 프로그램 종료)

비정상 상황으로 종료 시 0이 아닌 다른 값을 사용한다.

 


주석

컴파일의 대상으로 제외하기 때문에 프로그램의 실행결과에 영향을 주지 않는다.

주석을 통해 코드에 대한 설명을 표시한다. 행과 블록 단위의 주석이 있다.

1
// 행 단위 주석
1
2
3
/* 
블록 단위 주석
*/

 

행 단위 주석은 한 줄을 주석처리하고, 블록 단위 주석을 두 줄 이상 주석처리에 사용한다.

단, 블록 단위 주석(/*  ~  */) 안에는 블록 단위 주석을 사용할 수 없다.

 


printf 함수

1
printf("Hello world! \n");

 

printf(인자 전달 장소)

표현한 문자열을 인자로 전달하면서 printf라는 이름의 함수를 호출하는 문장이다.

printf 함수는 함수호출 시 전달되는 문자열을 모니터에 출력하는 기능을 한다.

인자가 여러 개 있을 경우 , 으로 구분한다.

 

c언어에서는 " "를 사용해서 문자열을 표현한다.

\n는 이스케이프 시퀀스 중 하나로 개행(줄바꿈) 의미이다.

 


서식문자(conversion specifier)

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void)
{
    printf("Hello World!\n");
    printf("%d\n"11618);
    return 0;
}

 

출력 형태를 지정하는 용도로 사용한다.

서식문자의 삽입 위치는 제한이 없어서, 문자열을 조합해서 출력할 수 있다.

 

%d / %i Signed decimal integer
%u Unsigned decimal integer
%c Unsigned char
%s String
%p Pointer in hexadecimal form
%o Unsigned octal integer
%x / %X Unsigned hexadecimal number
%e Floating point number in exponential format in e notation
%E Floating point number in exponential format in E notation
%f double number in decimal format
%g / %G double number in decimal format or exponential format depending on the value

 


변수(variable)

값을 저장할 수 있는 메모리 공간의 이름(메모리 공간 자체)

선언으로 값의 저장, 참조, 변경이 가능하다.

 

1
int num;

 

num이라는 변수를 선언한다.

세부적인 의미는 int는 정수의 저장이 가능한 메모리 공간을 할당하여 그 공간의 이름은 num으로 지정한다.

 

1
num = 20;

num이라는 변수의 이름을 사용하여 값을 저장한다.

선언된 변수에 처음 값을 저장하는 것이 초기화, 이후 저장된 값을 변경할 때는 대입(대입 연산).

 

1
printf("%d", num);

변수 num의 값을 참조해서 출력한다.

 

1
2
int num1 = 10;
int num2 = 20, num3 = 30;

 

c언어에서는 선언과 동시에 초기화가 가능하다.

위의 예제는 두 개의 변수를 선언과 초기화를 동시에 하였다.

변수를 선언만 하고 초기화하여 값을 넣어주지 않으면 쓰레기 값이 저장된다. -> 초기화 시 0의 값을 넣어준다.

 


변수 이름 규칙

알파벳, 숫자, 언더바(_)로 구성

대문자와 소문자를 구분

숫자로 시작X, 키워드로 변수 이름 사용X

이름 사이의 공백 

 


연산자

특정 연산을 요구할 때 사용하는 약속된 기호

 

= 대입 연산자

대입의 개념으로 오른쪽의 오는 값을 왼쪽에 오는 변수에 저장하는 형태로 사용한다.

1
num = 20;

 

+ 덧셈 연산자

 


 

 

 

댓글