2つの値を交換する
明解C言語 入門編 > 10. ポインタ >
2つの値を交換する
C
#include <stdio.h>void swap1(int nx, int ny)
{
int tmp = nx;
nx = ny;
ny = tmp;
}void swap2(int* nx, int* ny)
{
int tmp = *nx;
*nx = *ny;
*ny = tmp;
}int main(int argc, char* argv[])
{
int na = 57;
int nb = 21;printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");swap1(na, nb);
printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");na = 57;
nb = 21;
swap2(&na, &nb);printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");return 0;
}
実行結果
R:\>lesson077\Project1.exe
整数A:57
整数B:21整数A:57
整数B:21整数A:21
整数B:57
C++
#include <stdio.h>void swap1(int nx, int ny)
{
int tmp = nx;
nx = ny;
ny = tmp;
}void swap3(int& nx, int& ny)
{
int tmp = nx;
nx = ny;
ny = tmp;
}int main(int argc, char* argv[])
{
int na = 57;
int nb = 21;printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");swap1(na, nb);
printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");na = 57;
nb = 21;
swap3(na, nb);printf("整数A:%d\n", na);
printf("整数B:%d\n", nb);
puts("");return 0;
}
実行結果
T:\>lesson077\Project1.exe
整数A:57
整数B:21整数A:57
整数B:21整数A:21
整数B:57
Delphi
program Project1;{$APPTYPE CONSOLE}
uses
SysUtils;procedure swap1(nx:Integer; ny:Integer);
var
tmp: Integer;
begin
tmp := nx;
nx := ny;
ny := tmp;
end;procedure swap2(var nx:Integer; var ny:Integer);
var
tmp: Integer;
begin
tmp := nx;
nx := ny;
ny := tmp;
end;procedure swap3(nx:PInteger; ny:PInteger);
var
tmp: Integer;
begin
tmp := nx^;
nx^ := ny^;
ny^ := tmp;
end;procedure main();
var
na, nb: Integer;
begin
na := 57;
nb := 21;Writeln(Format('整数A:%d', [na]));
Writeln(Format('整数B:%d', [nb]));
Writeln('');swap1(na, nb);
Writeln(Format('整数A:%d', [na]));
Writeln(Format('整数B:%d', [nb]));
Writeln('');na := 57;
nb := 21;
swap2(na, nb);Writeln(Format('整数A:%d', [na]));
Writeln(Format('整数B:%d', [nb]));
Writeln('');na := 57;
nb := 21;
swap3(@na, @nb);Writeln(Format('整数A:%d', [na]));
Writeln(Format('整数B:%d', [nb]));
Writeln('');
end;begin
main;
end.
実行結果
S:\>lesson077\Project1.exe
整数A:57
整数B:21整数A:57
整数B:21整数A:21
整数B:57整数A:21
整数B:57
Perl
sub swap1 { my ($nx, $ny) = @_; my $tmp = $nx; $nx = $ny; $ny = $tmp; } sub swap2 { my ($nx, $ny) = @_; my $tmp = $$nx; $$nx = $$ny; $$ny = $tmp; } $na = 57; $nb = 21; printf("整数A:%d\n", $na); printf("整数B:%d\n", $nb); print "\n"; &swap1($na, $nb); printf("整数A:%d\n", $na); printf("整数B:%d\n", $nb); print "\n"; $na = 57; $nb = 21; &swap2(\$na, \$nb); printf("整数A:%d\n", $na); printf("整数B:%d\n", $nb); print "\n"; $na = 57; $nb = 21; ($na, $nb) = ($nb, $na); printf("整数A:%d\n", $na); printf("整数B:%d\n", $nb); print "\n";
実行結果
L:\>perl lesson_10_077.pl
整数A:57
整数B:21整数A:57
整数B:21整数A:21
整数B:57整数A:21
整数B:57
Ruby
def swap1(nx, ny) tmp = nx nx = ny ny = tmp end def swap2(nx, ny) return ny, nx end na = 57 nb = 21 printf("整数A:%d\n", na) printf("整数B:%d\n", nb) puts "" swap1(na, nb) printf("整数A:%d\n", na) printf("整数B:%d\n", nb) puts "" na, nb = nb, na printf("整数A:%d\n", na) printf("整数B:%d\n", nb) puts "" na = 57 nb = 21 na, nb = swap2(na, nb) printf("整数A:%d\n", na) printf("整数B:%d\n", nb)
実行結果
L:\>ruby l:\lesson_10_077.rb
整数A:57
整数B:21整数A:57
整数B:21整数A:21
整数B:57整数A:21
整数B:57