#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//兩數交換
void changeByValue(int a, int b){
//a, b為方法內的區域變數
//傳值交換
printf("a的記憶體位置:%d,值:%d\n", &a, a);
printf("b的記憶體位置:%d,值:%d\n", &b, b);
int temp = a;
a = b;
b = temp;
printf("a的記憶體位置:%d,值:%d\n", &a, a);
printf("b的記憶體位置:%d,值:%d\n", &b, b);
}
//兩數交換
void changeByAddress(int *a, int *b){
//a, b為方法內的區域變數
//傳址交換
printf("a的記憶體位置:%d,值:%d\n", &a, *a);
printf("b的記憶體位置:%d,值:%d\n", &b, *b);
int temp = *a;
*a = *b;
*b = temp;
printf("a的記憶體位置:%d,值:%d\n", &a, *a);
printf("b的記憶體位置:%d,值:%d\n", &b, *b);
}
int main(int argc, char *argv[]) {
int a = 10, b = 20;
printf("changeByValue------------------------------------\n");
printf("--a的記憶體位置:%d,值:%d\n", &a, a);
printf("--b的記憶體位置:%d,值:%d\n", &b, b);
changeByValue(a, b); //a:20, b=10
printf("--a透過傳值方法,運算後記憶體位置為:%d,值為:%d\n", &a, a); //a=10, b=20
printf("--b透過傳值方法,運算後記憶體位置為:%d,值為:%d\n", &b, b);
printf("changeByAddress-----------------------------------\n");
printf("--a的記憶體位置:%d,值:%d\n", &a, a);
printf("--b的記憶體位置:%d,值:%d\n", &b, b);
//要傳值給他,可是他只吃址
//所以給址(&a)
changeByAddress(&a, &b);
printf("--a透過傳值方法,運算後記憶體位置為:%d,值為:%d\n", &a, a);
printf("--b透過傳值方法,運算後記憶體位置為:%d,值為:%d\n", &b, b);
return 0;
}
沒有留言:
張貼留言