指標與函數

指標可以傳入函數,也可以從函數傳回指標
讓我們看看如何撰寫

傳遞指標到函數中
函數的宣告
傳回值形態 函數名稱(資料型態* 指標變數)
Ex:

[code language=”cpp”]
#include <iostream>

using namespace std;

void a(int* n); //引數為指標的函數宣告

int main(){

}<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>
[/code]

 

因為函數的原型可以省略引數名稱
所以括號內
只保留指標所指向變數的形態以及一個”*”
代表傳入值是一個指向整數的指標即可
Ex:

[code language=”cpp”]
#include <iostream>

using namespace std;

void a(int*); //引數為指標的函數宣告
//可以省略引數名稱

int main(){

}<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>
[/code]

函數的定義
傳回值形態 函數名稱(資料型態指標變數){
函數的主體
}
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

void a(int*);

int main(){

}

void a(int* n){ //引數為指標的函數定義

cout << *n << endl;

}
[/code]

函數的呼叫
呼叫函數時
由於必須接收一個指向整數的指標
因此
我們可以把整數的位址或者是指標當成引數傳入函數內
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

void a(int*);

int main(){

int k=10; //宣告整數型態變數k
int* m=&k; //宣告整數型態指標m,並將它指向k
a(&k); //呼叫函數a,並傳入k的位址
a(m); //呼叫函數a,並傳入指標m
}

void a(int* n){

cout << *n << endl;

}
[/code]

C++
有些運算必須透過指標的傳遞才能完成
例如
想利用函數將變數a以及變數b值互換
無法以傳值的方式撰寫
而必須以指標的傳遞來完成
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

void change(int*,int*);

int main(){

int m=10,n=15;
int* p1=&m;
int* p2=&n;

change(p1,p2);

cout << "m=" << m << endl;
cout << "n=" << n << endl;
}

void change(int* a,int* b){

int temp;
temp=*a;
*a=*b;
*b=temp;

}
[/code]

傳回值為指標的函數
傳回值形態* 函數名稱(資料型態 引數){
函數的本體
}
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

int* large(int*,int*); //引數以及傳回值皆是指標

int main(){

int m=10,n=15;
int* p1=&m;
int* p2=&n;
int* p3;

p3=large(p1,p2); //指標p3接收函數的傳回值

cout << *p3 << endl; //印出指標p3所指向的內容 } int* large(int* a,int* b){ if(*a>*b)
return a;
else
return b;

}<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>
[/code]

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料