12-黑馬程式員------C 語言學習筆記--- C語言指標與函數

來源:互聯網
上載者:User

標籤:

黑馬程式員------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

六 指標與函數

01 指標作為函數參數

指標作為實參時,與普通變數一樣,也是採用單向的值傳遞方式,即將指標變數的值(該值是一個地址)傳遞給被調函數的形參(必須也是一個指標變數)。由於形參接受實參傳遞的值是一個地址,這樣兩者就指向了同樣的變數。

*如果想要C語言中得函數調用實現多個值的改變,可以設計一個形參是指標變數的被調函數,這樣主調函數的實參指標與被調函數的形參指標相結合,根據形參指標與實參指標指向同一地址的原理,就可以通過改變該地址中得值,實現主調函數與被調函數之間的資料傳遞,從而使被調函數實際返回多個值到主調函數。

// 輸入兩個整數,用自訂函數實現這兩個值的交換,並在主函數中輸出交換後的結果.#include <stdio.h>void swap(int *x,int *y); //函式宣告int main(){    int a,b; // 定義兩個需要交換的整數    int *p1,*p2; // 定義兩個指向int類型的指標        printf("請輸入兩個數:\n"); // 輸入兩個整數    scanf("%d%d",&a,&b); // 接受兩個整數        printf("交換前a=%d,b=%d\n",a,b); // 輸出交換前的整數        p1 = &a; // 使p1指向了x    p2 = &b; // 使p2指向了y    swap(p1,p2); // 調用函數交換a和b    printf("交換以後:a=%d,b=%d\n",a,b);    }void swap(int *x,int *y){    int temp;    temp = *x;    *x = *y;    *y = temp;}

 

02 返回指標值的函數

一般形式:

資料類型 *函數名(形參列表)

{

    函數體;

}

 

03 指向函數的指標變數

可以把函數的首地址賦予一個指標變數,使該指標變數指向該函數,然後通過指標變數即可找到並調用這個函數,把這種指向函數的指標變數叫做函數指標變數。

一般形式:

資料類型 (*指標變數名)(函數形參列表)

#include <stdio.h>int main(){    int a = 4474;        int *p = &a;   // p = &a;        *p = 2;        printf("%d\n",*p);                    // 變數類型  變數名;    // 格式:變數類型 *變數名;    // 定義了一個指標變數p    // 指標變數只能儲存地址    // 指標就一個作用:能夠根據一個地址值,訪問對應的儲存空間    // 指標變數p前面的int:指標變數p只能指向int類型的資料                        return 0;}

 

12-黑馬程式員------C 語言學習筆記--- C語言指標與函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.