程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 構造體類型數據作為函數參數(三種辦法)

構造體類型數據作為函數參數(三種辦法)

編輯:關於C++

構造體類型數據作為函數參數(三種辦法)。本站提示廣大學習愛好者:(構造體類型數據作為函數參數(三種辦法))文章只能為提供參考,不一定能成為您想要的結果。以下是構造體類型數據作為函數參數(三種辦法)正文


(1)用構造體變量名作為參數。

#include<iostream>
#include<string>
using namespace std;
struct Student{
 string name;
 int score;
};
int main(){
 Student one;
 void Print(Student one);
 one.name="千手";
 one.score=99;
 Print(one);
 cout<<one.name<<endl;
 cout<<one.score<<endl;//驗證 score的值能否加一了
 return 0;
}
void Print(Student one){
 cout<<one.name<<endl;
 cout<<++one.score<<endl;//在Print函數中,對score停止加一
}


這類方法值采用的“值傳遞”的方法,將構造體變量所占的內存單位的內存全體次序傳遞給形參。在函數挪用時代形參也要占用內存單位。這類傳遞方法在空間和理論上開支較年夜,假如構造體的范圍很年夜時,開支是很客不雅的。

而且,因為采取值傳遞的方法,假如在函數被履行時代轉變了形參的值,該值不克不及反應到主調函數中的對應的實參,這常常不克不及知足應用請求。是以普通較少應用這類辦法。

(2)用指向構造體變量的指針作為函數參數

#include<iostream>
#include<string>
using namespace std;
struct Student{
 string name;
 int score;
};
int main(){
 Student one;
 void Print(Student *p);
 one.name="千手";
 one.score=99;
 Student *p=&one;
 Print(p);
 cout<<one.name<<endl;
 cout<<one.score<<endl;//驗證 score的值能否加一了
 return 0;
}
void Print(Student *p){
 cout<<p->name<<endl;
 cout<<++p->score<<endl;//在Print函數中,對score停止加一
}



這類方法固然也是值傳遞的方法,然則此次傳遞的值倒是指針。經由過程轉變指針指向的構造體變量的值,可以直接轉變實參的值。而且,在挪用函數時代,僅僅樹立了一個指針變量,年夜年夜的減小了體系的開支。

(3)用接頭體變量的援用變量作函數參數

#include<iostream>
#include<string>
using namespace std;
struct Student{
 string name;
 int score;
};
int main(){
 Student one;
 void Print(Student &one);
 one.name="千手";
 one.score=99;
 Print(one);
 cout<<one.name<<endl;
 cout<<one.score<<endl;//驗證 score的值能否加一了
 return 0;
}
void Print(Student &one){
 cout<<one.name<<endl;
 cout<<++one.score<<endl;//在Print函數中,對score停止加一
}



實參是構造體變量,形參是對應的構造體類型的援用,真假聯合時傳遞的是地址,因此履行效力比擬高。並且,與指針作為函數參數比擬較,它看起來加倍直不雅易懂。

因此,援用變量作為函數參數,它可以進步效力,並且堅持法式優越的可讀性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved