3
I’m testing these examples of C codes:
#include <stdio.h>
/* function definition to swap the values */
void swap(int x, int y) {
int temp;
temp = x; /* save the value of x */
x = y; /* put y into x */
y = temp; /* put temp into y */
return;
}
int main () {
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a : %d\n", a );
printf("Before swap, value of b : %d\n", b );
/* calling a function to swap the values */
swap(a, b);
printf("After swap, value of a : %d\n", a );
printf("After swap, value of b : %d\n", b );
return 0;
}
Exit:
Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200
So far so good, now the output of the second example is intriguing me:
#include <stdio.h>
/* function definition to swap the values */
void swap(int *x, int *y) {
int temp;
temp = *x; /* save the value at address x */
*x = *y; /* put y into x */
*y = temp; /* put temp into y */
return;
}
int main () {
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a : %d\n", a );
printf("Before swap, value of b : %d\n", b );
/* calling a function to swap the values.
* &a indicates pointer to a ie. address of variable a and
* &b indicates pointer to b ie. address of variable b.
*/
swap(&a, &b);
printf("After swap, value of a : %d\n", a );
printf("After swap, value of b : %d\n", b );
return 0;
}
Exit:
Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200 # aqui era pra ser 100
After swap, value of b :100 # e aqui era pra ser 200
Why the figures are coming out reversed?
then in the second case he did the memory address change that? + 1
– user45474
@Nikobellic No, it changes the value as in the first example. The difference is the life time of the change. In the first, the change exists only within the function, in the second it is made directly in the variable of the main function. This example of
swap()
is terrible. These internet courses may even give a foundation, but they teach a lot of wrong. Then I put what would be a functionswap()
better do what you say.– Maniero
On second thought, I’m not going for another function because the other function has nothing useful for the learning that was tried to pass there. It’s a completely different matter.
– Maniero