🚀
[超初心者向け!]B+tree 実装をポインタからわかりやすく解説 [C++ポインタ編]
はじめに
B+tree 実装をコーディング初心者でも分かるように解説してみました
この記事の対象者
・B+tree の理論は分かったけど、コードに落とし込めない人
・ポインタがよくわからない人
一緒に実装しましょう!
目次
- ポインタとは
- Node の構造体
- コード解説
コードの書き方はあくまで一例です
絶対的な解ではありませんので、参考にしていただければ幸いです
1. ポインタ
抑えるべきは3つ
その1. 値->アドレス
その2. アドレスを入れる型
その3. アドレス->値
その1. 値->アドレス
int a = 3
と定義すると、int 型に3が代入されます
この時のメモリのアドレス (メモリ内のどこにこの値が入っているか) は '&' を使うことによって表すことができます
pointer.cpp
#include <iostream>
using namespace std;
int main(void)
{
// Your code here!
int a = 3;
cout << a << endl; // 3
cout << &a << endl; // 0x7ffdaa8f6d44
}
関数 a はメモリ内のアドレス(0x7ffdaa8f6d44) に入っています
その2. アドレスを入れる型
関数名の前に '*' をつけることによって、アドレスだけを入れる型を作成することができるようになります
'int *' は int型のアドレスを入れることができます
pointer.cpp
#include <iostream>
using namespace std;
int main(void){
// Your code here!
int a=3;
cout<<a<<endl; //3
cout<<&a<<endl; //0x7ffdaa8f6d44
int *a_no_pointer=&a;
cout<<a_no_pointer<<endl;//0x7ffff1ee1a94
}
int *a_no_pointerは int a のアドレスを代入しているということです
その3. アドレス->値
その2の上で、*をつけると、そのアドレスに入っている値を出力することができます
pointer.cpp
#include <iostream>
using namespace std;
int main(void){
// Your code here!
int a=3;
cout<<a<<endl; //3
cout<<&a<<endl; //0x7ffdaa8f6d44
int *a_no_pointer=&a;
cout<<a_no_pointer<<endl;//0x7ffff1ee1a94
cout<<*a_no_pointer<<endl;//3
}
*a_no_pointer には &a が代入されています
そして、a には3が代入されているため3が出力されます
このように、'*' は二つの意味で用いられます
ここがややこしくポインタが難しいとされる理由かと思います
最後まで読んでくださりありがとうございました!
次は Node 構造体編です!
Discussion