2018년 3월 28일 수요일

Part 1:メモリの動的な確保解放, cmath, bitset..C++ 本を返却する前の細々しいもの整理(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 は違うことです。。。
Is there a difference in C++ 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
---------------
<cmath> (math.h)

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を2つ過ぎて) -> 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
---------------
std::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)
---------------
std::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;
 }
---------------
メモリの動的な確保と解放関連はまた調査して改めて整理したいと思います。

Part 1 。。。終わり

Part 2: string,sizeof,goto,try-throw-catch...C++ 本を返却する前の細々しいもの整理(C/C++ で働かす Raspberry Pi 3)

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

댓글 없음:

댓글 쓰기

1、2、QWER! in OSAKA (大阪 2025/4/10(木) Yogibo META VALLEY)

https://www.creativeman.co.jp/event/qwer-osaka/ QWER - CREATIVEMAN PRODUCTIONS 主催:LIVET 企画:ソニー・ミュージックソリューションズ 招聘:クリエイティブマンプロダクション 制作協力:クリエイテ...