亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2013年10月16日 09:33:24   作者:  
將一個結構體中變量中的數據傳遞給另一個函數,有以下三種方法。需要的朋友可以過來參考下,希望對大家有所幫助

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


這種方式值采取的“值傳遞”的方式,將結構體變量所占的內存單元的內存全部順序傳遞給形參。在函數調用期間形參也要占用內存單元。這種傳遞方式在空間和實踐上開銷較大,如果結構體的規(guī)模很大時,開銷是很客觀的。

并且,由于采用值傳遞的方式,如果在函數被執(zhí)行期間改變了形參的值,該值不能反映到主調函數中的對應的實參,這往往不能滿足使用要求。因此一般較少使用這種方法。

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



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

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

相關文章

  • 利用C/C++二進制讀寫png文件的方法示例

    利用C/C++二進制讀寫png文件的方法示例

    最近在做項目的時候遇到了這個問題,所以想著總結下,方法自己和有需要的朋友,下面這篇文章主要介紹了利用C/C++二進制讀寫png文件的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • c++動態(tài)庫調用的實現

    c++動態(tài)庫調用的實現

    本文主要介紹了c++動態(tài)庫調用的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • C++線性時間的排序算法分析

    C++線性時間的排序算法分析

    這篇文章主要介紹了C++線性時間的排序算法分析,是非常經典的非比較排序算法,對于C++程序員有很大的借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C++11中std::async的使用詳解

    C++11中std::async的使用詳解

    這篇文章主要介紹了C++11中std::async的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 詳解C++中new運算符和delete運算符的使用

    詳解C++中new運算符和delete運算符的使用

    這篇文章主要介紹了C++中new運算符和delete運算符的使用,文章來自于微軟開發(fā)者文檔,因而根據Visual C++的一些特性來進行講解,需要的朋友可以參考下
    2016-01-01
  • C++實踐Time類中的運算符重載參考方法

    C++實踐Time類中的運算符重載參考方法

    今天小編就為大家分享一篇關于C++實踐Time類中的運算符重載參考方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言實現帶頭雙向循環(huán)鏈表

    C語言實現帶頭雙向循環(huán)鏈表

    本文主要介紹了C語言實現帶頭雙向循環(huán)鏈表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 最短時間學會基于C++實現DFS深度優(yōu)先搜索

    最短時間學會基于C++實現DFS深度優(yōu)先搜索

    常見使用深度優(yōu)先搜索(DFS)以及廣度優(yōu)先搜索(BFS)這兩種搜索,今天我們就來講講什么是深度優(yōu)先搜索,感興趣的可以了解一下
    2021-08-08
  • C++中的String的常用函數用法(最新推薦)

    C++中的String的常用函數用法(最新推薦)

    這篇文章主要介紹了C++中的String的常用函數用法總結,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • C語言深入分析浮點型數據存儲

    C語言深入分析浮點型數據存儲

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內存位置。這意味著,當您創(chuàng)建一個變量時,就會在內存中保留一些空間。您可能需要存儲各種數據類型的信息,操作系統會根據變量的數據類型,來分配內存和決定在保留內存中存儲什么
    2022-08-08

最新評論