code.club

標題: 有關C++函數指標參數的用法 [打印本頁]

作者: return    時間: 2019-3-9 13:33
標題: 有關C++函數指標參數的用法
#include <iostream>
#include <string>
using namespace std;

void swap1(int *, int *);
void swap2(int &,int &);

int main(){
        int x = 1, y = 2;
        int *p = &x;
        int *q = &y;
       
        swap1(p,q); //若原型是*p,*q則寫p,q即可。
        cout<<" x is "<<x<<" and y is "<<y<<endl;
        swap2(x,y); //若原型是&x,&y則寫x,y即可。
        cout<<" x is "<<x<<" and y is "<<y<<endl;
       
        swap1(&x,q);//若原型是*p,*q也可以寫&x,&y。
        cout<<" x is "<<x<<" and y is "<<y<<endl;
        swap2(*p,y);//若原型是&x,&y則也可以寫*p,*q。
        cout<<" x is "<<x<<" and y is "<<y<<endl;
       
       
        return 0;
}


void swap1(int *p, int *q){
        int temp = 0;
        temp = *p;
        *p = *q;
        *q = temp;
}

void swap2(int &i, int&j){
        int temp = 0;
        temp = i;
        i = j;
        j = temp;
}
作者: return    時間: 2019-3-10 10:48
#include <iostream>
#include <string>
using namespace std;

void change1(int&); // 給值時不用另外加指標符號
void change2(int*); // 給值時要加上&的指標符號
int main(){
       
        int x = 100;
        int y = 100;
        change1(x);
        cout<<"x is now "<<x<<endl;
        change2(&y);
        cout<<"y is now "<<y<<endl;


return 0;       
}

void change1(int &i){
                i = 321; //這裡也不用再加上&
        }
void change2(int *i){
        *i = 123; //這裡要加上*的指標符號
}
作者: return    時間: 2019-3-30 14:31
#include <iostream>
#include <cstdlib>
using namespace std;

int t1(int);
int t2(int*);//參數是指標型態,所以要輸入的是變數的位址
int t3(int&);//參數是參照型態,直接用變數下去它會自動取位址

int main(){
        int a,b,c;
        a = 10;
        b = 10;
        c = 10;
       
        cout<<t1(a)<<endl;
        cout<<t2(&b)<<endl;//參數預設是指標,表示要輸入該變數的位址,故加上&
        cout<<t3(c)<<endl;//參數預設是參照,表示輸入的變數是只取其位址,故不用再另加&
        cout<<a<<endl;//10
        cout<<b<<endl;//11
        cout<<c<<endl;//11
       

        return 0;
}

int t1(int i){
        i++;
        return i;
}

int t2(int *i){
        *i = *i + 1;//表示本來就是輸入變數的位址,所以要變成數值才能運算,故用*
        return *i;
}

int t3(int &i){
        i++;//本來就會直接取其位址,所以直接用值運算,不用另加 * 或 &
        return i;
}





歡迎光臨 code.club (https://code.club/) Powered by Discuz! X3.2