ポインタの配列

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

#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