如何通過函數調用得到n個要改變的值(摘抄自譚浩強C語言)

如果想通過函數調用得到n個要改變的值,可以:

1、在主調函數中設n個變量,用n個指針變量指向它們;

2、然後將指針變量作實參,將這n個變量的地址傳給所調用的函數的形參;

3、通過形參指針變量,改變該n個變量的值;

4、主調函數中就可以使用這些改變了值的變量。


程序舉例詳見C程序設計(譚浩強)226-229頁


想要通過函數調用交換兩個數據值得正確程序:

void swap(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

上面程序的理解是,通過調換指針所指向的變量值,達到實參中指向地址中的變量值的調換,最終達到變換目的


錯誤程序如下:

void swap(int *p1,int *p2)

{

int *p;

p=p1;

p1=p2;

p2=p;

}

程序的意圖是,通過交換實參指針pointer_1和指針pointer_2的值,使其達到交換的目的

但存在問題,當在調用函數中交換形參指針p1和p2的值後,不能講變化後的形參傳遞給實參,故不能達到實參指針變量交換的目的

C語言中實參變量和形參變量之間的數據傳遞是單向的“值傳遞”方式。指針變量作函數參數也要遵循這一規則。不可能通過調用函數來改變實參指針變量的值,但可以改變實參指針變量所指變量的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章