c

출처 https://www.reddit.com/r/Blockbench/comments/14twtpm/c_and_c_icons/

1. C/C++각각의 차이


무엇이 다를까?


1
2
3
4
5
6
7
8
9
10
#include <iostream>

int main(){
 //C
  printf("~~~\n");
 //C++
  std::cout << "~~~" << std::endl;
 
  return 0;
}

C

  • 직접적인 작성자, 라이브러리 작성자는 본인이 사용할 함수(기능)을 직접적으로 구현해야한다.
  • 어떠한 함수를 사용하려면 그 함수에 대해서 잘 알아야한다. (printf()의 원형과 정의를 잘 알아야한다.)

C++

  • EX) 리다이렉트 (« , »)와 같은 문자를 이용해 어떠한 기능(객체 사용)을 즉각적으로 사용할 수 있게 된다.
  • 즉, 내가 어떠한 함수, 객체를 완벽하게 알 필요가 없다. (세탁소 아저씨에게 세탁을 맡기는 느낌)

C와 C++의 차이는 구조가 간결해 진다.

2. 인스턴스


C언어에서 자료형 변수; 형태로 사용하게 되는데 쉽게 설명하면 변수를 인스턴스로 부르게 된다.

3. Namespace, cout, cin


Namespace

  • 의역하자면 ‘소속, 가문’이라고 번역해보자
  • C언어에서는 소속에 개념이 없다
  • 분류한다. 묶음으로 엮어준다.

cout

  • Console out?
  • 콘솔 출력
  • cout « 값
  • printf 처럼 형식 문자를 입력하지 않아도 알아서 출력한다
    • 사용자가 기대한 출력이 나오지 않을 수도 있다 말 그대로 알아서 이기 때문

cin

  • Console in?
  • 콘솔 입력 (키보드 입력)
  • cin » 인스턴스

4. 자료형


auto

  • 데이터 형의 자동화

변수 선언과 선언 및 정의

  • int a = 10; //C언어 식 정의 및 정의
  • int b(10); //C++식 선언 및 정의
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>

int main(){
  int a(10);
// b를 출력하면 10이 나옴, 복사의 의미가 된다.
  int b(a);
// 이행위도 된다. -> 변수가없는데도 된다. -> 상수처리 됨. 이름이 없는 인스턴스
  int (10);
//auto의 의미는 a의 자료형을 따라가게 된다.
  auto b(a);
 
 return 0;
}
  • auto는 정말 위대하다
  • 한번정도 자료형을 선언해 주면 알아서 만들어 준다.
  • C언어에서 함수 포인터 사용에 대한 귀찮은 문제를 auto 하나로 쉽게 사용가능하다.
1
2
3
4
5
6
7
8
9
10
#include <iostream>

void funcWithAuto(int, char *){}

int main(){
  void(*pfFunc)(int, char*) = funcWithAuto;
  auto pfFunc2(funcWithAuto);
 
  return 0;
}