/*-----------------------
ポインタ説明
ポインタの説明するのに、値渡し/参照渡しアプローチと
配列のダイレクト操作アプローチしてる人が居る感
-----------------------*/
#include <iostream>
using namespace std;
// 値渡し/参照渡しアプローチ
void add1_A(int foo){ cout << &foo << endl; foo++; }
void add1_B(int *foo){ cout << foo << endl; (*foo)++; }
void f01(){
cout<<"値渡し/参照渡しアプローチ"<<endl;
int a = 10;
cout << &a << endl;
add1_A(a); //aが11になってくれない
add1_B(&a); //aが11になってくれる
}
//配列アプローチ
void f02(){
cout<<"配列アプローチ"<<endl;
int a[10] = {0,1,2,3,4,5,6,7,8,9};
cout<<a[0]<<endl;
cout<<a<<endl;
cout<<(*a)<<endl;
cout<<a[1]<<endl;
cout<<a+1<<endl;
cout<<(*a+1)<<endl;
}
//mallocアプローチ
void f03(){
cout<<"mallocアプローチ"<<endl;
void *a = malloc(4);
cout << a << endl;
int *b = (int*)a;
cout << b << endl;
(*b) = 10;
cout << (*b) << endl;
free(a);
}
int main() {
f01();
f02();
f03();
return 0;
}
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK44Od44Kk44Oz44K/6Kqs5piOCgrjg53jgqTjg7Pjgr/jga7oqqzmmI7jgZnjgovjga7jgavjgIHlgKTmuKHjgZcv5Y+C54Wn5rih44GX44Ki44OX44Ot44O844OB44GoCumFjeWIl+OBruODgOOCpOODrOOCr+ODiOaTjeS9nOOCouODl+ODreODvOODgeOBl+OBpuOCi+S6uuOBjOWxheOCi+aEnwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8g5YCk5rih44GXL+WPgueFp+a4oeOBl+OCouODl+ODreODvOODgQp2b2lkIGFkZDFfQShpbnQgZm9vKXsgY291dCA8PCAmZm9vIDw8IGVuZGw7IGZvbysrOyB9CnZvaWQgYWRkMV9CKGludCAqZm9vKXsgY291dCA8PCBmb28gPDwgZW5kbDsgKCpmb28pKys7IH0Kdm9pZCBmMDEoKXsKCWNvdXQ8PCLlgKTmuKHjgZcv5Y+C54Wn5rih44GX44Ki44OX44Ot44O844OBIjw8ZW5kbDsKCWludCBhID0gMTA7Cgljb3V0IDw8ICZhIDw8IGVuZGw7CglhZGQxX0EoYSk7IC8vYeOBjDEx44Gr44Gq44Gj44Gm44GP44KM44Gq44GECglhZGQxX0IoJmEpOyAvL2HjgYwxMeOBq+OBquOBo+OBpuOBj+OCjOOCiwp9CgovL+mFjeWIl+OCouODl+ODreODvOODgQp2b2lkIGYwMigpewoJY291dDw8IumFjeWIl+OCouODl+ODreODvOODgSI8PGVuZGw7CglpbnQgYVsxMF0gPSB7MCwxLDIsMyw0LDUsNiw3LDgsOX07Cgljb3V0PDxhWzBdPDxlbmRsOwoJY291dDw8YTw8ZW5kbDsKCWNvdXQ8PCgqYSk8PGVuZGw7CgkKCWNvdXQ8PGFbMV08PGVuZGw7Cgljb3V0PDxhKzE8PGVuZGw7Cgljb3V0PDwoKmErMSk8PGVuZGw7CgkKfQoKLy9tYWxsb2PjgqLjg5fjg63jg7zjg4EKdm9pZCBmMDMoKXsKCWNvdXQ8PCJtYWxsb2PjgqLjg5fjg63jg7zjg4EiPDxlbmRsOwoJdm9pZCAqYSA9IG1hbGxvYyg0KTsKCWNvdXQgPDwgYSA8PCBlbmRsOwoJaW50ICpiID0gKGludCopYTsKCWNvdXQgPDwgYiA8PCBlbmRsOwoJKCpiKSA9IDEwOwoJY291dCA8PCAoKmIpIDw8IGVuZGw7CglmcmVlKGEpOwp9CgppbnQgbWFpbigpIHsKCWYwMSgpOwoJZjAyKCk7CglmMDMoKTsKCXJldHVybiAwOwp9