C言語ポインタ遊び


C言語ポインタ遊び

なんか、低レベルのプログラミング言語で久々に遊びたくなった。
ちな、低レベルってのは、技術的に劣っているという意味では無く、よりハードウェアに近い抽象化が低い言語です。

ソース

hello.cpp
// ConsoleApplication1.cpp : このファイルには 'main' 関数が含まれています。プログラム実行の開始と終了がそこで行われます。
//

//C言語の入出力関数(printfなど)を
//使用するのに必要
#include <stdio.h>

//C++の入出力オブジェクトを
//使用するのに必要
#include <iostream>

void main()
{
    int i=0;
    int intnohensu;
    char* charnopointer;


    //int型変数に255を代入
    intnohensu = 255;

    //明示的にchar型ポインタとして、intのアドレスを代入
    charnopointer = (char*)&intnohensu;

    printf("255の場合");
    printf("intnohensuの値 =%d\n", intnohensu);
    printf("intnohensuのアドレス =%p \n", &intnohensu);
    printf("charnopointeの値(10進) =%d\n", charnopointer);

    for (i = 0; i <= 3; i++) {
        printf("charnopointer[%d]のアドレス =%p\n", i,  &charnopointer[i]);
        printf("charnopointer[%d]の値 =%x\n", i,charnopointer[i]);
    }


    printf("\n\n");

    //int型変数に255を代入
    intnohensu = 256;

    //明示的にchar型ポインタとして、intのアドレスを代入
    charnopointer = (char*)& intnohensu;

    printf("256の場合");

    printf("intnohensuの値 =%d\n", intnohensu);
    printf("intnohensuのアドレス =%p \n", &intnohensu);
    printf("charnopointeの値(10進) =%d\n", charnopointer);

    for (i = 0; i <= 3; i++) {
        printf("charnopointer[%d]のアドレス =%p\n", i, &charnopointer[i]);
        printf("charnopointer[%d]の値 =%x\n", i, charnopointer[i]);
    }


    std::cout << "レッツポインタ遊び!\n";

}

結果

スクリーンショット 2019-09-21 13.12.31.png

イメージ

こんな感じ