简答题

结构体数据作为参数在函数间传递有哪几种方式?请指出它们的异同点。

正确答案

结构体作为参数在函数之间进行传递主要有下列三种方式:
复制传递方式:把调用函数中结构体实参的值复制给被调用函数的形参构体。
地址传递方式:将调用函数中实参结构体的地址传递给被调用函数形参的结构体指针。
引用方式:被调用函数的形参应该说明为引用结构体变量形式。实际上,它是为实参结构化起一个别名。
另外,还可以通过全局变量的方式在函数间进行数据传递,但这种方式不好,增加函数之间的耦合性。
地址传递方式要比复制方式效率高。结构体复制传递方式需要对实参做一个备份,它把一个结构体变量作为参数传递,但要将结构体全部成员值一个一个传递,费时间又费空间,开销大。如果结构体的成员较多,则程序运行效率会大大降低,而采用地址传递方式将结构体变量的地址作为函数参数比较好,能提高运行效率。复制传递方式不影响调用函数实参的数值,而地址传递方式有可能影响实参的数值。

答案解析

相似试题
  • C++函数中值的传递方式有哪几种?

    简答题查看答案

  • 8086的主程序和子程序之间的参数传递都有哪几种?

    简答题查看答案

  • ASP.NET页面间传递有哪几种方式

    简答题查看答案

  • 数据的逻辑结构有哪几种?常用的存储有哪几种?

    简答题查看答案

  • 在DBS的全局结构中,磁盘存储器上的数据结构有哪几种形式?

    简答题查看答案

  • 数据结构的存储方式有哪几种?

    简答题查看答案

  • 什么是数据的线性表结构?它有哪几种存储结构?

    简答题查看答案

  • 设有以下结构类型说明:struct stud    {   char num[5],name[10];    int s[4];    double ave;   };   请编写:  (1)函数readrec把30名学生的学号、姓名、四项成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算平均分放  在结构体对应的域中。  (2)函数writerec输出30名学生的记录。  (3)main函数调用readrec函数和writerec函数,实现全部程序功能(注:不允许使用全局变量,函数之间的数据全部使用参数传递)。

    简答题查看答案

  • CPU和外设间的数据传送方式有哪几种?实际选择某种传输方式时,主要依据是什么?

    简答题查看答案