티스토리 뷰

Language/C++ 언어

C++과 C언어의 차이

데브훈96 2020. 2. 11. 02:04

안녕하세요, IT디자이너입니다. 

 

이번 포스팅은 많은 분들이 궁금해 하시는 C++과  C언어의 차이를 포스팅하도록 하겠습니다. 

 

절차지향 언어 중 대표적으로 뽑히는 언어는 C언어입니다. 반면 객체지향의 언어 중 하나는 C++입니다. 

 

과거에는 어떨지 몰라도 현재는 정말로 C++이 C에서 비롯된 언어인가 생각될 정도로 사용방법이 거의 다르다고 볼 수 있습니다. 

 

하지만, 뛰어난 개발자들은 언제나 새로운 언어를 아무렇지 않게 빠르게 배우고 효율적으로 사용할줄 알아야 한다고 생각합니다.

 

1. 헤더파일 

C언어에서 제공하는 표준 헤더파일은 <stdio.h> 였습니다. 하지만 C++에서 제공하는 표준 헤더파일은 <iostream>입니다. 또한 확장자가 생략되어 있는데요, 이것은 C++의 특징입니다. C++에서 제공하는 표준 라이브러리는 확장자 .h가 생략되어있습니다. 

 

2. 출력과 입력

C언어에서는 printf()와 scanf()라는 함수를 사용하여 출력과 입력을 받았습니다. 하지만, C언어에서는 std 네임스페이스에(namespace)에 속한 객체를 활용해서 출력과 입력을 받습니다. 

 

int nun;

std :: cin >> num;

std :: cout << num << endl;

 

cin은 입력 cout은 출력 endl은 end of line이라는 의미로 개행을 뜻합니다. 

 

3. string과 인스턴스 선언

C++에서는 문자열 선언시 배열이 아닌 string이라는 std 네임스페이스(namespace)에 속한 객체를 사용하여 문자열을 출력할 수 있습니다. 즉, 문자열 입력시 입력할 문자열의 길이를 고려하지 않고 선언할 수 있습니다. 

 

또한 C++에서는 변수가 아닌 "인스턴스" 라는 단어를 주로 사용하게 됩니다. 

 

int a = 10;

string str = "찬훈";

a는 int 자료형에 대한 인스턴스이며, str은 string 객체에 대한 인스턴스입니다. 이런식으로 이해하시면 될것 같습니다. 

 

또한 인스턴스 생성 방식이 C언어와 달리 1가지 더 있습니다. 

 

int a(10);

int b(a);

인스턴스 a의 초깃값음 상수 "10" 이며 인스턴스 b 초깃값은 변수 a가 되는 것입니다. 

 

4. 메모리 동적할당

C++에서는 더 이상 malloc()과 free()는 사용하지 않습니다.  바로 new와 delete를 "연산자"를 사용합니다. 여기서 중요한 것은 더 이상 함수가 아닌 "연산자" 라는 것입니다. !

 

int* num = new int(10);

int* arr = new int[5];

for(int i=0; i<5; i++)
 arr[i] = i+1;

for(int i=0; i<5; i++)
 cout << arr[i] << endl;
 
 cout << num << endl;
 
 
 delete num;
 delete[] arr;

장점은 변수든 배열이든 메모리를 할당할 크기를 고려하지 않고 할당을 할 수 있다는 것입니다. 또한 delete의 사용방법은 배열만 사용방법이 [ ]를 같이 사용해야 하는것 말고는 다 동일합니다. 

 

5. 참조형 변수 선언?

C언어의 차이 포스팅에서 마지막으로 설명드릴 내용입니다. 바로 참조형 변수입니다. 

 

 

참조형 변수를 사용하는 이유중 가장 설명하기 쉬운 예제중 하나입니다. 바로 포인터처럼 main() 함수 밖에 정의된 함수에서 매개변수로 주소값을 받아서 직접 컨트롤이 가능합니다. 

 

단점으로는 호출하는 코드에서 함수를 보았을 때 정의된 함수에서 매개변수가 참조형식이라는 것을 전혀 알 수 없습니다. 즉, 함수를 정의하는 코드랑 같이 봐야지 알 수 있다는 것입니다. 

 

또한 상수를 참조할 수도 있습니다. 이것을 r-value참조 라고합니다. 

 

int &&num = 10;

int &&num2 = 10+5;

int num3 = 5;

int &&num4 = num3+5;

위의 코드를 보시면 다 r-value 참조형식입니다. 즉, 상수입니다. 또한 연산을 통한 "임시 결과"도 r-value라는 것입니다. 

 

이런 문법이 등장한 이유는 추후 포스팅하도록 하겠습니다. 

 


간략하게 C와 C++의 차이점을 포스팅하였습니다. !!!

 

감사합니다. 

'Language > C++ 언어' 카테고리의 다른 글

C++ 클래스를 활용하는 방법 기초!  (0) 2020.02.13
C++과 C의 차이 -2  (0) 2020.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함