用结构体类型的数据作函数参数

2018年4月5日   19:20

1.用结构体变量作函数参数:


运行结果:


用结构体变量作实参时,采取的也是“值传递”方式,将  结构体变量所占的内存单元的内容(结构体变量成员列表)    全部顺序传递给形参,这里形参也得是结构体变量。

但是,这种传递方式下,函数调用期间形参也要占用内存单元(个人理解意思就是 跟要传递的实参一样,系统也要给形参分配空间。)。并且,这种传递方式是单向的,如果在执行被调函数期间改变了形参(也是结构体变量)的值,该值不能返回主调函数,这往往造成使用上的不便,因此一般少用这种方法。

         为了区别,我把上面的程序改了一下:


运行结果如下:


显然,在两组输出中,形参s的成员score[0]自加1后成功地显示在结果中,但是实参stu的成员score[0]并没有加1,更加说明了这种传递方式是单向的。

2.用指向结构体变量的指针作函数参数:


运行结果:


从结果可以看出,这种传递方式是双向的(形参q指针指向的成员score[0]自加1传递给了实参),并且,在调用函数期间,仅仅建立了一个指针变量,大大的减小了系统的开销,提高了运行效率。

3.用结构体变量的引用变量作函数参数(老师用的方法):


运行结果:


这种传递方式:实参是结构体变量,形参是对应的结构体变量的引用,传递的是地址,因而执行效率与指针差不多一样高。而且更加直观明了,使程序更加简单易懂。


版权声明:本文为baidu_38760069原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。