C & C++ FAQ
|
C | C++ | 二つのポインタ値を交換する関数はどのように実現すればよいでしょうか。 |
/* 二つのポインタ値を交換する(正しく動作しない) */ #include <stdio.h> void swapptr(void *x, void *y) { void *temp = x; x = y; y = temp; } int main(void) { char *a = "ABC"; char *b = "123"; swapptr(a, b); /* 交換したつもり */ printf("a = %s\n", a); /* a = ABC */ printf("b = %s\n", b); /* b = 123 */ return (0); }
/* 二つのポインタ値を交換する(正しく動作) */ #include <stdio.h> void swapptr(void **x, void **y) { void *temp = *x; *x = *y; *y = temp; } int main(void) { char *a = "ABC"; char *b = "123"; swapptr(&a, &b); /* 交換 */ printf("a = %s\n", a); /* a = 123 */ printf("b = %s\n", b); /* b = ABC */ return (0); }