2014年5月7日 星期三

HW6 指標 記憶體位置

1.宣告兩個整數指標aPtr、bPtr和兩個整數a、b
2.請使用者輸入兩個數字到a、b
3.將aPtr指向a,bPtr指向b
4.列印aPtr、bPtr的記憶體位址
5.列印aPtr和bPtr指到的內容
6.撰寫modify函式,使用傳值的方式將aPtr、bPtr分別加10,並於主程式列印結果
7.撰寫swap函式,使用傳址的方式將a、b交換,並於主程式列印結果
8.撰寫swap2函式,使用傳參考方式將a、b交換,並於主程式列印結果




#include<stdio.h>
#include<stdlib.h>

void modifyA(int *cptr);
void modifyB(int *dptr);
void swapA(int *x,int *y);
void swapB(int &a,int &b);


int main(void)
{
int *aptr,*bptr,a,b;

aptr=&a;//aPtr指向a
bptr=&b;//bPtr指向b

printf("請輸入兩個整數 \n");
scanf("%d%d",&a,&b); //寫入a,b
printf("\n");
printf("aptr 的記憶體位置為 %d \nbptr 記憶體位置為 %d \n\n",aptr,bptr);
printf("aptr記憶體位置所指到的值為 %d \nbptr記憶體位置所指到的值為 %d \n\n",*aptr,*bptr);
modifyA(aptr);
printf("過函式後的*aptr = %d \n",*aptr);
    modifyB(bptr);
printf("過函式後的*bptr = %d \n\n",*bptr);
swapA(&a,&b);
printf("a,b兩數交換 a=%d b=%d \n",a,b);
swapB(a,b);
printf("a,b兩數交換 a=%d b=%d \n",a,b);
system("pause");
return 0;
}


void modifyA(int *cptr) //傳值的方式將aPtr加10
{
*cptr=*cptr+10;
}

void modifyB(int *dptr)//傳值的方式將bPtr加10
{
*dptr=*dptr+10;
}

void swapA(int *x,int *y)//傳址的方式將a、b交換
{
int hold;
hold=*x;
*x=*y;
*y=hold;
return ;
}

void swapB(int &a,int &b)//傳參考方式將a、b交換
{
int hold;
hold=a;
a=b;
b=hold;
return;
}


沒有留言:

張貼留言