본문 바로가기

728x90
반응형

분류 전체보기

(162)
[C++] 배열, 동적 할당 (new와 delete) 메모리 할당 new와 delete를 사용하면 malloc와 free를 대체하여 메모리를 할당할 수 있다.  #include #include #include char *MakeStr(int len) { char* str = (char*)malloc(sizeof(char)*len); return str;}int main(){ char* str = MakeStr(20); strcpy(str, "Hello World!"); std::cout  위와 같이 C++에서도 malloc와 free를 사용한 메모리 할당이 가능하다. 그러나 위 방법을 사용할 경우 두 가지 불편한 점이 존재한다. 할당할 대상의 정보를 반드시 바이트 크기로 전달해야 하며 반환형이 void포인터이기 때문에 적절히 형 변환을 해주어야한다.  이때..
[c++] 참조자 참조자 C++에서 참조자를 사용하면 하나의 변수에 여러 개의 이름을 부여하는 것이 가능하다. int num1 = 2000; int &num2 = num1; 위 코드를 보기만 해서는 이해가 잘 안될 수도 있다. C언어에서 분명히 &연산자는 주소값을 나타내는 것이라고 하였는데 주소에 2000을 저장할 수가 있는것일까? 당연히 주소에 2000이라는 정수를 넣는 것은 말이 안되고 이때 &연산자가 다른 의미로 사용이 된 것이다. &가 이미 선언된 변수 앞에 오면 주소를 반환하라는 뜻이지만 새로 선언되는 변수 앞에 올 때에는 참조자의 선언을 뜻하게 된다. 따라서 위의 코드가 실행되면 num2는 num1 의 참조자가 되며 2000이 저장되어 있는 num1의 메모리에는 num2라는 이름도 붙게 되는 것이다. 참조자의 ..
[C++] C++에서 C언어 헤더파일 호출 C++에서 C표준 헤더파일 호출 C++에서 C언어 헤더파일을 호출하는 것도 가능하다. 아래 코드처럼 그냥 include 해도 문제없이 사용이 가능하다. #include #include #include #include 그러나 이것보다는 .h를 빼고 c를 붙여서 다음과 같이 선언하는 것이 좋다. #include #include #include #include 위와 같이 사용하면 .h를 사용했을 때 보다 C++에 최적화된 함수들을 사용할 수 있다. 예를 들어 C표준에서 abs 함수는 다음과 같이 선언되어 있다. int abs(int num); 그러나 C++에서는 다음과 같이 오버로딩이 되어 있다. long abs(long num); float abs(float num); double abs(double num..
[C++] 인라인 함수 (inline function) 인라인 함수 인라인 함수는 C언어에서의 매크로함수의 장점만을 가져온 함수라고 할 수 있다. 매크로 함수는 일반적인 함수에 비해 실행속도가 빠르지만 정의하기 어려우며 복잡한 함수의 정의에 한계가 있다. 따라서 인라인 함수를 사용하면 정의하는 것은 어렵지 않으면서도 실행속도는 빠르게 할 수 있다. 인라인 함수를 사용하고 싶으면 함수를 선언할 때 inline 지시자를 명시해 주면 된다. inline int SQUARE(int x) { return x*x; }
[C언어] 헤더파일, #include의 활용 헤더파일 헤더파일을 include 하는 방식에는 2가지 방법이 있다. 첫 번째는 를 사용하는 방식이고 두 번째는 ""를 사용하는 방식이다. 첫 번째 방식을 사용하면 표준 헤더파일이 저장되어 있는 디렉터리 안에서 파일을 찾게 된다. 따라서 이 방식은 #include 와 같이 표준 헤더파일을 include 할 때 사용된다. 두 번째 방식을 사용하면 기본적으로는 소스파일이 저장된 디렉터리 안에서 헤더파일을 찾는다. 이때 헤더파일의 이름과 함께 절대경로를 명시하여 include 하면 헤더 파일이 어디 있던 사용이 가능해진다. 따라서 두 번째 방식은 사용자가 정의한 헤더파일을 포함시킬 때 사용된다. 헤더파일은 마치 매크로와 같은 역할을 한다. 해당 부분을 헤더파일이 완벽히 대체하게 되는 것이다. 따라서 아래와 같..
[C언어] 파일의 분할 (extern, static) extern extern 선언을 통해 다른 파일에 선언된 변수나 함수 등을 사용할 수 있다. 이때 파일끼리 같은 프로젝트 내에 있기만 하면 구체적으로 어느 파일에 있는지는 알리지 않아도 된다. test1.c #include int num = 0; extern void increase(); extern int getnum(); int main() { printf("num : %d\n", getnum()); increase(); printf("num : %d\n", getnum()); increase(); printf("num : %d\n", getnum()); return 0; } test2.c extern int num; void increase() { num++; } int getnum() { retu..
[C언어] 파일 입출력, 파일 스트림 생성 (fopen, fclose) 파일 스트림 (File Stream) 프로그램 안에서 파일에 저장되어 있는 데이터를 참조하고 싶을 때 우선 파일 스트림을 형성해야 한다. fopen 파일 스트림은 fopen 함수호출을 통해서 형성할 수 있다. fopen 함수의 반환형과 요구하는 매개변수는 다음과 같다. FILE* fopen(const char* filename, const char* mode); fopen 함수는 스트림을 형성할 파일 이름과 스트림의 종류를 매개변수로 요구하며 스트림을 형성한 후 스트림과 파일의 정보를 FILE 구조체 변수에 담아서 그 변수의 주소값을 반환한다. 여기서 FILE은 기본 자료형이 아니기 때문에 구조체라는 것을 알 수 있다. 파일 개방 모드 C언어에서는 스트림의 성격에 따른 6가지의 파일 개방 모드가 존재한다..
[C언어] 조건부 컴파일 매크로 (#if, #elif, #endif, #ifdef, #ifndef) 조건부 컴파일 매크로 조건부 컴파일 매크로는 조건문과 매우 유사한 역할을 한다. 조건에 따라 해당 파일의 코드 일부를 실행하거나 건너뛸 수 있다. 조건부 컴파일 매크로의 지시자에는 #if #elif #else #ifdef #ifndef 가 있다. 조건부 컴파일 매크로는 조건문과 마찬가지로 주어진 조건이 참이라면 범위 내의 코드를 컴파일하고 그렇지 않다면 해당 코드를 버린다. 이때 범위를 지정하는 방법으로 #endif를 사용하여 #if 가 끝나는 지점을 정의해주어야 한다. 따라서 아래 코드처럼 사용이 가능하다. #include int main() { int i = 55; #if i < 50 printf("i is small"); #elif i < 100 printf("i is normal"); #else ..

728x90
반응형