標籤:
黑馬程式員------<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語言指標與函數