参考書では上のようなスワップ関数が紹介されていましたが
これをマクロ関数ではなく普通の関数として書くとうまくスワップされません。
#include <stdio.h>
void swap(char *s1, char *s2)
{
char *t = s1;
s1 = s2;
s2 = t;
}
int main(void)
{
char *str[2] = {"windows", "linux"};
swap(str[0], str[1]);
return 0;
}
#include <stdio.h>
void swap(char **s1, char **s2)
{
char *t = *s1;
*s1 = *s2;
*s2 = t;
}
int main(void)
{
char *str[2] = {"book", "helm"};
swap(&str[0], &str[1]);
return 0;
}
マクロ関数をそのまま?書き写した関数の挙動が違う理由
2.
コード3のswap(&str[0], &str[1]);は画像でいうbの値をスワップしていますよね?
ではコード2のswap(str[0], str[1])はどこの値をスワップしているのでしょうか? a?
画像のaをスワップしても結果的にはスワップされていそうな気がするのですがわかりません...