ポインタのポインタ

みなさん、お待ちかね!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void setMessage(const char **ppDst, const char *pMessage)
{
    *ppDst = pMessage;
}
 
int main(int argc, char *argv[])
{
    const char messageHello[] = "hello.";
    const char messageBye[] = "bye.";
    const char *p = messageHello;
 
    printf( "p = %s\n", p );
    setMessage( &p, messageBye );
    printf( "p = %s\n", p );
    return 0;
}

実行結果
p = hello.
p = bye.

今日は、ポインタのポインタだよ。
&pは、アドレスが格納された変数のアドレスを表してるよ。
setMessageの中では、最初の引数に*を付けると、
引数に格納されているアドレスをたどってポインタを書き換えることが出来るよ。
もう1つの引数で、そのポインタを書き換えているね。

少しややっこしいかもしれないけど、
ポインタっていうのは、アドレスが格納された変数ということを思い出せば、
きっと理解できるから、ゆっくり考えてね。

Leave a Comment