[PR]

二つの値を交換する

戻る

 二つの値を交換する関数を作る。

//*********************************************************
// 二つの int 型の変数 a, b の値を交換する。
//*********************************************************
void SwapInt( int *a, int *b )
{
	int nTmp;
	nTmp = *a;
	*a   = *b;
	*b   = nTmp;
}//SwapInt
//*********************************************************
// va から size バイトの内容と、vb から size バイトの内容を交換する。
//*********************************************************
void
memswap
	(
		void   *va,
		void   *vb,
		size_t  size
	)
{
	char *ca;
	char *cb;
	char  cTmp;
	{for( ca = (char *)va, cb = (char *)vb;
		 0 < size;
		--size, ++ca, ++cb )
	{
		cTmp = *ca;
		*ca  = *cb;
		*cb  = cTmp;
	}}
}//memswap

使用例

// 関数 memswap() の使用例です。
int main( void )
{
	char  ca = 'A';
	char  cb = 'Z';
	long  la = 0;
	long  lb = LONG_MAX;
	char *pa = "やあ、兄くん……";
	char *pb = "おにいたま〜";
	char *pc = "兄チャマ、チェキよぅっ!";

	printf( "  ca=%c, cb=%c\n", ca, cb );
 	memswap( &ca, &cb, sizeof(char) );
	printf( "→ ca=%c, cb=%c\n\n", ca, cb );

	printf( "  la=%ld, lb=%ld\n", la, lb );
 	memswap( &la, &lb, sizeof(long) );
	printf( "→ la=%ld, lb=%ld\n\n", la, lb );

	printf( "  pa=[%s], pb=[%s]\n", pa, pb );
 	memswap( &pa, &pb, sizeof(char *) );
	printf( "→ pa=[%s], pb=[%s]\n\n", pa, pb );

	printf( " pc=[%s]\n", pc, pc );
 	memswap( &pc, &pc, sizeof(char *) );
	printf( "→ pc=[%s], pc=[%s]\n\n", pc, pc );
	return 0;
}//main

実行結果

  ca=A, cb=Z
→ ca=Z, cb=A

  la=0, lb=2147483647
→ la=2147483647, lb=0

  pa=[やあ、兄くん……], pb=[おにいたま〜]
→ pa=[おにいたま〜], pb=[やあ、兄くん……]

  pc=[兄チャマ、チェキよぅっ!], pc=[兄チャマ、チェキよぅっ!]
→ pc=[兄チャマ、チェキよぅっ!], pc=[兄チャマ、チェキよぅっ!]


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。