ポインタのポインタ – その2
今日はアドレスを見るよ!
#include <stdio.h> void showMessage(const char * const *pp) { printf( "in func, *pp = %s\n", *pp ); printf( "pp = 0x%016lX\n", (unsigned long)pp ); printf( "*pp = 0x%016lX\n", (unsigned long)(*pp) ); } int main(int argc, char *argv[]) { const char message[] = "hello."; const char *p = message; printf( "message = 0x%016lX\n", (unsigned long)message ); printf( "&p = 0x%016lX\n", (unsigned long)(&p) ); showMessage( &p ); return 0; }
実行結果
message = 0x00007FFF5FBFF900
&p = 0x00007FFF5FBFF8F8
in func, *pp = hello.
pp = 0x00007FFF5FBFF8F8
*pp = 0x00007FFF5FBFF900
今日はポインタのポインタのアドレスを見るよ。
配列の先頭アドレスをポインタに入れてるよ。
そのポインタのアドレス、つまりポインタのポインタが&pだね。
そのアドレスを関数の引数に渡してるよ。
だから、&pとppが一致してるよ。
そして、*ppでmessageの先頭アドレスが取得できるよ。
ここまで理解出来れば、あとは習うより慣れろだから、
いっぱいコードを書いて覚えてね!
Leave a Comment