inline 함수는 프로그램의 실행 속도를 높이기 위해서 c++에 추가된 기능이며 쉽게 이해하기 위해 매크로 함수와 비교해 보면 좋다.


예를 들어 아래와 같이 SQUARE라는 매크로를 만들어 사용할 경우,


 
#define SQUARE(x) ((X)*(X))

int main(void)
{
	 std::cout << SQUARE(5) << std::endl;
	 return 0;
}
 


실제 프로그램 실행 시 main 함수의 SQUARE를 사용하게 될 경우 define된 주소로 점프 하여 실행 후 다시 원래로 돌아온다.


하지만 인라인 함수의 경우 전처리이기 아래와 같이 사용 하게 되면, 컴파일 시 인라인 함수가 코드 안에 삽입 되기 때문에 실제 main함수에서 SQUARE를 사용 시 삽인된 코드가 바로 실행 되기 때문에 속도도 빠르고 효율적이다.


 
inline int SQUARE(int x)
{
	 return x*x;
}

int main(void)
{
	 std::cout << SQUARE(5) << std::endl;
	 return 0;
}
 

1. 문자형을 숫자형으로

atoi​,atol,atof는 문자열을 숫자로 바꾸어 주는 함수이다.

사용하기 위해서 stdlib.h 이 헤더를 호출해야 한다.


 
include <stdlib.h>
 


 -. atoi는 ascii to integer --> 문자열을 int형

 -. atol은 ascii to long --> 문자열을 long형

 -. atof는 ascii to float --> 문자열을 double형으로 바꾸어 준다.


​앞에 -가 올 경우도 그대로 출력해 주고 문자나 띄어쓰기를 만나면 그 전까지의 숫자를 모두 바꾸어 준다.

또 시작하자마자 문자를 만날 경우 0을 반환한다.


간단한 예제를 살펴보자!


 
#include 
int main()
{
   char buf1[10], buf2[10];
   int num1, num2;
   
   memset(buf1, 0x00, sizeof(buf1));
   memset(buf2, 0x00, sizeof(buf2));
   
   sprintf(buf1, "20");
   sprintf(buf2, "30");
   num1 = atoi(buf1);
   num2 = atoi(buf2);
   
   printf("num1 + num2 = %d \n", num1+num2);
   
   return 0;
} 
 



2. 숫자형을 문자형으로

 -. itoa : integer 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

 -. ltoa : long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

 -. ultoa : unsigned long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

 -. fcvt : 실수(고정 소수점:float) 값을 문자열로 변환합니다.

 -. ecvt : 실수(부동 소수점:double) 값을 문자열로 변환합니다.

 -. gcvt : 실수 값을 부호와 소수점을 포함하여 문자열로 변환합니다.

+ Recent posts