ポインタのポインタ – その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