来源:远方网络 | 2006-1-6 | (有1893人读过)
第二:
例程1在mian()中,必须对返回的结构体变量进行一次结构体变量与结构体变量直接的相互赋值操作。
for(int i=0;i<num;i++) { a[i]=get_score(); }
而例程2中由于是通过内存地址直接操作,所以完全没有这一过程,提高了效率。
for(int i=0;i<num;i++) { get_score(a[i]); }
函数也是可以返回结构体应用的,例子如下:
//程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream> #include <string> using namespace std;
struct test { char name[10]; float socre; };
test a;
test &get_score(test &pn) { cin>>pn.name>>pn.socre; return pn; }
void print_score(test &pn) { cout<<pn.name<<"|"<<pn.socre<<endl; }
void main() { test &sp=get_score(a); cin.get(); cout<<sp.name<<"|"<<sp.socre; cin.get(); }
调用get_score(a);结束并返回的时候,函数内部没有临时变量的产生,返回直接吧全局结构变量a的内存地址赋予结构引用sp
最后提一下指针的引用
定义指针的引用方法如下
void main() { int a=0; int b=10; int *p1=&a; int *p2=&b; int *&pn=p1; cout <<pn<<"|"<<*pn<<endl; pn=p2; cout <<pn<<"|"<<*pn<<endl; cin.get(); }
pn就是一个指向指针的引用,它也可以看做是指针别名,总之使用引用要特别注意它的特性,它的操作是和普通指针一样的,在函数中对全局指针的引用操作要十分小心,避免破坏全局指针!
|