Language/C

C언어 강좌 (수학함수/난수생성함수 rand/함수 포인터)

Dexter_- 2016. 9. 8. 09:28
728x90
반응형

 

   

   

C언어 Chapter 17.


 

 

수학 함수

 

  • 수학함수를 이용하기 위해서 <math.h> 파일을 이용한다.
  • gcc 컴파일의 경우 gcc -o main main.c -lm 으로 컴파일 해야한다.

cl 컴파일은 자동으로 <math.h> 파일을 찾아 준다.

 

 

  • gcc 컴파일의 라이브러리 함수 위치

/user/lib/ 위치의 libc.a

 

 

  • windows 컴파일의 라이브러리 함수 위치

C:\Program Files\Microsoft Visual Studio\VC98\Lib 위치의 LIBCP.LIB

 

 

수학 관련 함수

 

 

 

Ex) 수학함수 사용법

 

 

결과

 

 

 

난수 생성 함수 rand()

 

  • rand() 함수는 <stdlib.h> 파일에 명시되어 있다.
  • 0 ~ 32767 사이의 정수를 반환 한다.

 

보통 인수 값으로 time(NULL) 함수를 이용한다.

 

time() 함수는 1970년 1월 1일로부터 지금까지 경과된 시간을 초로 계산하여 반환한다.

 

 

Ex) 난수를 발생하는 프로그램

 

 

프로그램 설명

  • 위의 for 문은 고정 Random
  • 아래의 for 문은 time(NULL) 시간의 변화에따른 Random

 

결과 : 윗줄 값은 고정이고 아랫줄 값은 실행할때마다 변한다.

 

 

 

함수 포인터

  • 함수 포인터 변수의 선언 형식

반환자료형 (* 함수포인터 변수이름) (인수1, 인수2, ..., 인수n)

 

 

Ex) 함수포인터 사용법

 

 

프로그램 설명

 

  • 함수 포인터 handle 의 선언

int (*handler) (int, int);

 

  • 함수 포인터 handle이 plus()함수를 가리키게 된다.

if (op == '+') handler = plus;

 

 

  • 함수 포인터 handle을 이용하여 함수를 호출한다.

printf("the result is %d.\n", (*handler) (num1, num2));

 

 

결과

 

 

Ex) point 함수 받는법

 

 

 

4G memory 의 5분할

 

Code
(함수 기계어)
Data
(전역 변수)
초기화 O
BSS
(전역변수)
초기화 X
Heap
(동적할당)
Stack
(지역변수)
 

 

Roder : HDD 에서 5분활된 프로그램을 Memory 로 5개 영역으로 복사하여 가져오면 CPU가 단계별로 해석하여 수행한다.

 

 

Ex) stack 으로 메모리의 값이 낮아지고 호출함수는 주소값을 쓰고소멸후 다음 호출함수가 그 주소값을 재활용하여 쓴다.

 

 

결과

 

 

 

 

 

728x90
반응형