#include<stdio.h>
// Function to swap two values but does not work
void swapDoesNotWork (int *ptrX, int *ptrY);
// Function to swap two values and works fine
void swap (int *ptrX, int *ptrY);
void swap (int *px, int *py) {
int temp;
temp = *px;
*px = *py;
*py = temp;
}
void swapDoesNotWork (int *px, int *py) {
printf("\n\n");
int temp;
temp = *px;
px = py;
py = &temp;
}
int main() {
int x = 5;
int y = 10;
swapDoesNotWork(&x, &y);
printf("++++++++++++++++++\n");
printf("pre x:%d\n", x);
printf("pre y:%d\n", y);
printf("\n");
printf("After calling swapDoesNotWork(&x, &y)...\n");
printf("post x:%d\n", x);
printf("post y:%d\n", y);
printf("++++++++++++++++++\n\n");
x = 5;
y = 10;
printf("= = = = = = = = =\n\n");
printf("pre x:%d\n", x);
printf("pre y:%d\n", y);
swap(&x, &y);
printf("\n");
printf("After calling swap(&x, &y)...\n");
printf("post x:%d\n", x);
printf("post y:%d\n", y);
printf("= = = = = = = = =\n\n");
return 0;
Вывод вышеуказанной программы при компиляции и выполнении:
infi@linux% ./swap_test.o
++++++++++++++++++
pre x:5
pre y:10
After calling swapDoesNotWork(&x, &y)...
post x:5
post y:10
++++++++++++++++++
= = = = = = = = =
= = = = = = = = =
pre x:5
pre y:10
After calling swap(&x, &y)...
post x:10
post y:5
Как видно, функция swapDoesNotWork
, похоже, не меняет значения, как в случае сswap
function.
Я новичок в языке C, в основном из сценариев.Может кто-нибудь помочь мне, почему swapDoesNotWork
functon не меняет значения?