반응형

C++ 변수 특징

  • 2진수 표기법, 자릿수 표기법(C++11)
  • 변수의 중간 선언 가능.
  • bool 타입 지원 // C언어(C99)도 가능 했음
  • 구조체 만들때 멤버를 초기화 할 수 있음(C++11)
struct Point
{
int x = 0; // 생성 타임에 멤버 초기화 가능. C++11
int y = 0;
};

int main()

{

struct Point p1; // C Style

Point p2; // C++ Style


int n1 = 0b00; // 2진수로 표현시 C++11

int n2 = 1'000'000; // 자리수가 클 경우 콤마 처럼 ' 으로 구분하여 표시 가능 C++11


int n3 = 0; // 함수 중간에 변수선언 가능.

bool b = true; 

}



일관된 초기화(Uniform Initialization) // C++11

  • 중괄호 초기화(Brace Initialization)라고도 부른다.
  • 직접 초기화(Direct Initialization) : 초기화시에 '=' 을 사용하지 않는다.
  • 복사 초기화(Copy Initialization) : 초기화시에 '=' 을 사용한다.
  • 묵시적 형변환 지원하지 않음

직접 초기화(Direct Initialization)

int n1{ 0 };

int n2{ 0 };

int x[2]{ 1, 2 };

Point p{ 1,2 };


복사 초기화(Copy Initialization)

int n1 = { 0 };

int n2 = { 0 };

int x[2] = { 1, 2 };

Point p = { 1,2 };



예제

int n1 = 3.4; // C Style로 초기화시 묵시적 형 변환되어 OK

int n2{ 3.4 }; // 데이터 타입 오류로 컴파일 Error


char c1{ 100 }; // OK

char c2{ 300 }; // 1Byte 초과로 Error


int n3{}; // 0 기본값으로 초기화됨




별칭(using)

  • typedef : 타입에 대해서 별칭(alias)을 만들때 사용
  • using : 타입과 template의 별칭(alias)을 만들때 사용(사용범위가 넓으므로 typedef 보단 using 권장)
// typedef
typedef int DWORD; // int 타입을 DWORD로 정의
typedef void(*F)(int); // void 함수 포인트 F로 정의

// using
using DWORD = int; // int 타입을 DWORD로 정의
using F = void(*)(int); // void 함수 포인트 F로 정의


int main()
{
DWORD n;
F f;
}


반응형

반응형

1. 기본 함수

 

 C++

 C

 헤더 파일

 <stdio.h>

<iostream>

 표준 입력

 scanf

std::cin

 표준 출력

 printf

std::cout

 개행

 '\n'

 std::endl or '\n'








#include <iostream>

int main()
{
    int n = 0;
    std::cin >> n;	// 숫자 입력
    std::cout << n;	// 입력 숫자 출력
}


2. 조정자(iomanipulator) 함수

  • 헤더 사용 : <iomanip>
  • 변환 출력 : std::dec(10진수), std::hex(16진수)
  • 문자열 출력 자리수 지정 : std::setw(10자리)
  • 문자열 출력 정렬(기본 우측 정렬) : std::left(좌측), std::right(우측)
  • 문자열 공백 문자 지정 : std::setfill('*')
#include <ostream>
#include <iomanip>
#include <string>

int main()
{
	int n = 0;
	std::string name = "harry";

	std::cin >> n;	// 숫자 입력
	std::cout << std::hex << n << std::endl; // 입력 숫자 16진수 출력
	std::cout << n << std::endl; // 입력 숫자 출력(16진수로 유지)
	std::cout << std::dec << n << std::endl;// 입력 숫자 10진수로 재변환 출력
	std::cout << name << std::endl;	// "harry" 문자열 출력
	std::cout << std::setw(10) << name << std::endl; // "harry" 문자열 10자리수로 출력(기본 우측 정렬)
	std::cout << std::setw(10) << std::setfill('#') << name << std::endl; // 공백 문자 '#' 채우기
	std::cout << std::setw(10) << std::left << name << std::endl; // "harry" 문자열 10자리수로 출력(좌측 정렬)
	std::cout << std::setw(10) << std::right << name << std::endl; // "harry" 문자열 10자리수로 출력(우측 정렬)
	std::cout << name << std::endl;

}


반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

C++ 함수 특징 #1  (0) 2019.05.05
C++ 제어문(if, switch)과 반복문(for)  (0) 2019.01.16
C++ 변수의 특징(variable) #2  (0) 2019.01.15
C++ 변수의 특징(variable) #1  (0) 2019.01.14
C++ 네임스페이스(Namespace)  (0) 2019.01.02

반응형
  • namespace 요소에 접근하는 3가지 방법
    • qualified name (  완전한 이름 )을 사용한 방법.
    • using declaration ( 선언 )을 사용한 방법.
    • using directive ( 지시어 )를 사용한 방법.

#include "pch.h"
#include <iostream>

// Harry namespace
namespace Harry
{
    void init() { printf("Harry Init\n"); }
    void destroy() { printf("Harry destroy\n"); }
}

// global namespace
void init()
{
    printf("Global init\n");
}

int main()
{
    std::cout << "Harry World!\n"; 

    // 1. 전체 이름 접근(qualified name)
    Harry::init(); // OK
    Harry::destroy(); // OK

    // 2. using 선언 접근(using declaration)
    using Harry::init;
init(); // OK destroy() // Error // 3. using 지시어 접근(using directive) using namespace Harry;
init(); // OK destroy(); // OK
// 4. global namespace(전역 함수 호출) ::init(); // OK }


  • C++의 모든 표준 라이브러리는 std namespace 안에 있다.
  • C++ 표준 라이브러리를 사용하는 3가지 방법
    • qualified name ( 완전한 이름 )을 사용한 방법 -> std::min(1, 2)
    • using declaration ( 선언 )을 사용한 방법 -> using std::min;
    • using directive ( 지시어 )를 사용한 방법 -> using namespace std;
      • using namespace std;를 사용할 경우 이름 충돌에 주의 필요
    • 표준 라이브러리를 완전한 이름을 사용하는 것이 좋다.
  • 표준 라이브러리 헤더 파일 모양
    • C : 파일 이름 뒤에 .h 를 붙인다. -> <stdio.h>
    • C++ : 파일 이름 뒤에 .h 가 붙지 않는다. -> <cstdio>
    • 사용자가 헤더를 만들때는 .h 를 붙이는 것이 관례이다. -> "myheader.h"
  • C++에서 C언어 헤더 사용하는 방법
    • 기존의 C언어 헤더 파일을 모두 계속 사용할 수 있다.
    • C언어 헤더에서 '.h'를 제거하고 앞에 'c'를 붙여서 사용한다.
      • <string.h> -> <cstring>
      • <stdlib.h> -> <cstdlib>
      • <math.h> -> <cmatch>


반응형

+ Recent posts