본문 바로가기
관/솔직한 c 언어 공부

C언어 라이브러리와 변수를 알아보자 (2020ver).

by 4차원 박스 2020. 7. 30.

C언어는 함수기반의 언어이다. 그 의미를 알아보고 변수의 큰 종류인 전역변수와 지역변수를 알아보는 글이다.

 

 

<라이브러리(library) 함수는 무엇을 의미하는가?> 

c 언어의 기본은 함수 이다

이건 파이썬류(OOP를 말한것임)와 다르게 구분되는 큰 틀중 하나 이다

 

즉 함수기반 과 객체지향(oop) 기준의 프로그래밍 언어의 2개의 큰 틀중에

c언어는 함수 기반의 프로그래밍 언어라는 것이다.

 

함수의 집합을 라이브라리 (library)라 한다 (파이썬은 모듈이라 함)

 

좀더 구체적으로는

printf if, for 등 미리 제공되는 함수를 표준함수라 각각 일컫고 표준함수들의 모임을 표준 라이브러리 라 한다.

 

이러한 라이브러리들은 자신이 자주 사용하는 것들을 자신이 만들어서

함수로 만들어놓고 나중에 따로 불러오는 것을 목적으로 만든다고 생각한다.

 

이러한 함수는 메인함수 보다 먼저 위에다가 선언하고 사용하는 방식이

가장 일반적이나, 만약 나중에 만들게 된다면 함수 헤더 (바디 말고)만 메인함수보다 앞에

선언해 두고 나중에 메인함수 밑에다가 선언한다(솔직히 이 방식이 더 깔끔할 수 있다.)

 

아래 라이브러리들을 보자

<stdlib.h> <stdio.h> <time.h> <math.h> 에서 제공하는 대표적인 함수 두 가지 예를 들면 다음과 같이 있다.

 

<stdlib.h> : rand,srand (난수관련 함수 등등 많이 있다.)

 

<stdio.h> : printf, scanf (입출력 관련 함수)

 

<time.h> : time, difftime (시간 관련 함수들)

 

<math.h> : sqrt, pow (수학관련 함수로 루트값 지수 계산을 위한 함수 등등 많이 있다.)

 

<지역변수와 전역변수?> 

다음 2가지 요인이 차이점을 띤다

1. 메모리상에 존재하는 기간

2. 변수에 접근할 수 있는 범위

 

지역변수

int main(){} 같은 함수안에서 혹은 따로 만들어 사용하는 함수내에서 사용하는

변수로 그 범위는 해당 함수블록 {} 안에서 만 유효하며 그 밖으로는 해당하지 않는다

지역변수는 해당 지역을 벗어나면 자동으로 소멸된다. 또한 지역변수는 선언된 지역이 다르면 이름이 같아도 문제가 생기지 않는다. 지역변수는 스택(stack) 이라는 메모리 영역에 할당되고 접시에 쌓듯이 할당된다.

 

결론 : 지역변수는 해당 선언문이 실행 될때 메모리 공간에 할당되었다가, 선언문이

존재하는 함수가 반환을 하면 메모리 공간에서 소멸된다.

 

전역변수

실행되면 메모리공간에 할당되어 프로그램이 종료될 때까지 메모리 공간에 남아있는 변수

 

1. 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재함.

2. 별도의 값으로 초기화하지 않으면 0으로 초기화됨.

3. 프로그램 전체 영역 어디서든 접근이 가능하다.

 

전역변수는 위와는 다르게 함수 밖에서 선언되어 그 이후에 등장하는 모든 함수에 영향을

미치는 범위를 가지며 그 스크립트 안에서 계속 유효하다.

 

댓글