char *ptr;
char x; char *ptr = &x; // ptr を宣言し、x のアドレスで初期化
char x; char *ptr; // ptr を宣言 ptr = &x; // ptr に x のアドレスを代入
#include <iostream>
#include <iomanip>
#define hexformat(fill, wd) std::hex<<std::setfill(fill)<<std::setw(wd)
int main()
{
char x;
char *ptr = &x;
std::cout << "&x = 0x" << hexformat('0', 8) << (int)&x << "\n";
std::cout << "ptr = 0x" << hexformat('0', 8) << (int)ptr << "\n";
}
実行結果:
&x = 0x002FFEDC ptr = 0x002FFEDC
演習問題:
#include <iostream>
#include <iomanip>
#define hexformat(fill, wd) std::hex <<std::setfill(fill)<<std::setw(wd)
int main()
{
const int SIZE = 10;
char v[SIZE];
for(int i = 0; i < SIZE; ++i) {
char *ptr = &v[i];
std::cout << "ptr = 0x" << hexformat('0', 8) << (int)ptr << "\n";
}
}
ptr = 0x003dfef4 ptr = 0x003dfef5 ptr = 0x003dfef6 ptr = 0x003dfef7 ptr = 0x003dfef8 ptr = 0x003dfef9 ptr = 0x003dfefa ptr = 0x003dfefb ptr = 0x003dfefc ptr = 0x003dfefd
演習問題:
#include <iostream>
#include <iomanip>
#define hexformat(fill, wd) std::hex<<std::setfill(fill)<<std::setw(wd)
int main()
{
char x;
auto ptr = &x;
std::cout << "&x = 0x" << hexformat('0', 8) << (int)&x << "\n";
std::cout << "ptr = 0x" << hexformat('0', 8) << (int)ptr << "\n";
}
実行結果:
&x = 0x002FFEDC ptr = 0x002FFEDC
#include <iostream>
int main()
{
char v[10];
auto ptr = &v[0];
std::cout << "typeid(ptr).name() = " << typeid(ptr).name() << "\n";
}
実行結果:
typeid(ptr).name() = char *
前:メモリ |上:C/C++ ポインタ入門 |次:ポインタの指す先を参照