麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

結構體類型數據作為函數參數(三種方法)

2020-01-26 15:44:03
字體:
來源:轉載
供稿:網友

(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進行加一
}



實參是結構體變量,形參是對應的結構體類型的引用,虛實結合時傳遞的是地址,因而執行效率比較高。而且,與指針作為函數參數相比較,它看起來更加直觀易懂。

因而,引用變量作為函數參數,它可以提高效率,而且保持程序良好的可讀性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产91精品欧美 | 国产精品久久久久久久四虎电影 | 黄色大片在线观看 | 黄色av网站免费 | 日本网站一区 | 一区二区免费看 | a视频在线看 | 在线免费观看精品 | 久久超| 亚洲日本高清 | 天天草天天干天天 | 久久精品在线免费观看 | 国产日韩三区 | 一级α片 | 中文字幕免费一区 | 中文字幕在线一 | 九一成人 | 九草网 | 国产精品久久久久无码av | 国产成人精品一区二区三区电影 | 日韩av在线播放一区 | 黄色视频一级毛片 | 欧美日韩成人一区二区 | 亚洲无马在线观看 | 91精品一区二区综合在线 | 一区二区三区在线视频观看58 | 在线成人亚洲 | 国产精品一区二区手机在线观看 | 欧美日韩亚洲国产精品 | 黄色特级毛片 | 曰韩在线视频 | 免费观看又色又爽又黄的崩锅 | 久久国产精品99国产 | 欧洲黄色一级视频 | 久久久一区二区精品 | 久久精品小短片 | 日本成人高清视频 | 国产精品久久久久久久午夜片 | 久久精品视频网站 | 99精品视频在线导航 | xxxxhd18hd日本hd |