位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 指針變量作為形參,實(shí)參為變量的地址

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-01

    此時(shí)將實(shí)參中變量的地址傳遞為形參指針,相當(dāng)于指針指向了變量,所以利用指針對(duì)變量的值改變將帶回實(shí)參。這種用法常用在需要一個(gè)函數(shù)返回多個(gè)值的情況,因?yàn)橐粋€(gè)函數(shù)只能返回一個(gè)函數(shù)值,所以可以用指針將需要返回的其他值帶回主調(diào)函數(shù)。

【例題】實(shí)現(xiàn)對(duì)三個(gè)變量按從小到大的順序輸出

    算法分析:

    設(shè)計(jì)一個(gè)函數(shù)swap(),實(shí)現(xiàn)將兩個(gè)變量交換,該函數(shù)需要返回兩個(gè)值,所以將函數(shù)的形參設(shè)計(jì)為指針,實(shí)參是兩個(gè)變量的地址。

程序代碼如下:

#include <stdio.h>

void swap(int *p,int *q):

main()

{

    int a,b,c;

    printf("please input a ,b & c:\n"); 

    scanf("%d%d%d",&a,&b.&c);

    if(a>b)

        swap(&a,&b); 

    if(a>c)

        swap(&a,&c); 

    if(b>c)

        swap(&b,&c);

    printf("%4d%4d%4d\n",a,b,c);

}

void swap(int *p,int *q)

{

    int t;

    t=*p;

    *p=*q;

    *q=t;

}

程序執(zhí)行,按照屏幕提示信息輸入:

  6  2  4

輸出結(jié)果為:

  2  4  6

程序中,將實(shí)參a、b的地址分別賦給形參指針p、q,則a、b與p、q就形成了如圖所示的指向關(guān)系:

image.png

指針作為形參和普通變量作為形參一樣,當(dāng)函數(shù)執(zhí)行完畢,指針?biāo)純?nèi)存空間會(huì)被收回。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部