본문 바로가기

C++

Part 1: 메모리동적할당-해제,cmath,bitset....C++ 책 반납 전 소소한 정리(C/C++ 로 작동시키는 Raspberry Pi 3)

C/C++ で働かす Raspberry Pi 3

C/C++ 로 작동시키는 Raspberry Pi 3



Raspberry Pi (라즈베리파이)에 관심이 있어서 빌렸는데, 80%의 비중으로 C++ 총정리입니다.

남겨 놓을 만한 내용이 있어 정리합니다.


1. 변수

---------------

int num=100; //copy initialization

---------------

---------------

int num(100); //direct initialization

---------------

으로 표현 가능하네요.

copy initialization,direct initialization의 차이가 있다고 하는데....

https://stackoverflow.com/questions/1051379/is-there-a-difference-between-copy-initialization-and-direct-initialization


초기화 하지 않은 상태로 출력해보면 차이가 있습니다.

---------------

int num; -> 0 (false)

int num(); -> 1 (true)

---------------


2.cmath라이브러리

---------------

#include <cmath>

...

pow(2,3) -> 2의3승 -> 8

sqrt(2) -> 루트2 -> 1.41421

M_PI -> 파이 -> 3.14159

---------------

http://www.cplusplus.com/reference/cmath/


3. 비트연산

---------------

int a=1;

int b=a << 2; -> 2bit 좌로 이동 -> 0001 -> 0100 -> 4

---------------


4.bitset라이브러리

---------------

#include <bitset>

..

bitset<4> a; -> 4bit의 변수를 선언 -> 0000

a.set(2); -> 3번째에 1을 설정(오른쪽으로부터 0을 두개지나서) -> 0100

bitset<4> a=1UL; -> 1을 4bit로 대입 -> 0001

bitset<4> a=2UL; -> 2을 4bit로 대입 -> 0010

bitset<4> a=3UL; -> 3을 4bit로 대입 -> 0011

bitset<4> a=4UL; -> 4을 4bit로 대입 -> 0100

---------------

http://www.cplusplus.com/reference/bitset/bitset/


5.vector 벡터

---------------

#include <vector>

..

vector<int> v(5,1); -> int[5]={1,1,1,1,1} 와 같이 5개의 원소를 1로 초기화

v.size() -> 원소수 -> 5

v.empty() -> 비어있으면 1 (true), 아니면 0 (false)

---------------

http://www.cplusplus.com/reference/vector/vector/



6.pointer 포인터

---------------

#include <iostream>

using namespace std;

void change(int* numP)

{

(*numP)++;

-> ()가 없으면 연산자 우선순위에 의해 ++ 가 먼저 처리되어

주소에 담긴 값이 아닌 주소자체가 바뀌게 됩니다.

}

int main(void)

{

int num=1;

cout << num << endl; -> 1

change(&num);

cout << num << endl; -> 2

return 0;

}

---------------


7. 메모리 동적할당(new)/해제(delete)

---------------

#include <iostream>

using namespace std;

int main(void)

{

int* arr=new int[3]; -> Hip영역에 메모리할당 (C의 malloc 와 동일)

arr[0]=0;

arr[1]=1;

arr[2]=2;

for(int i=0;i<3;i++)

cout << arr[i] << endl;

delete[] arr; -> Hip영역에 메모리해제 (C의 free와 동일)

-> delete arr; 도 같은 처리가 되었습니다.

for(int i=0;i<3;i++)

cout << arr[i] << endl;

return 0;

}

---------------

메모리 동적할당,해제 관련은 따로 조사해서 새로 정리해야겠습니다.

Part1 ..끝..

반응형