ポインタの配列

今日もポインタのポインタだよ。

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

ポインタも配列にできるよ。
配列の使い方は大丈夫だよね。
そして、今日もポインタのポインタだよ。
今日は、ポインタの中身を交換するよ。
そのためには、変数を書き換えてもらうためのアドレスである、
ポインタのポインタを渡して、変数の中身を交換してるよ。
交換するには、一時的にアドレスを入れる変数を用意するよ。
2つの皿に乗ったケーキを交換する場合、もう1枚お皿を用意するよね。
考え方はこれと同じで、一時的に使用するポインタを使って、
アドレスを書き換えてるよ。

メモリをイメージすることが大事だから、
分からないときは絵を描いてがんばってね。

Leave a Comment