返回值与接收数据

结构体做返回值,相当于类名做返回值。

形式参数是有主调函数传递给被调函数的数据接收变量,空间属于被调函数。

返回值是被调函数传送给主调函数的数据接收变量,是无名的不可见的变量,空间在主调函数中。

用引用做返回值,用对象做接收数据。

将全局区的变量传给EAX,在有EAX指向的地址的数据复制到是s1,s2中,打印的结果是有效的。返回值中的空间是不可见的。

#include <iostream>

using namespace std;

struct SStud

{

  int nNumb;

  char sName[20];

  float fMath;

}g_s1={1008,"张三",89.5f},g_s2={1009,"李四",91.5f},g_s={0};

SStud& GetData1()

{

  return g_s1;

}

SStud& GetData2()

{

  return g_s2;

}

int main()

{

  SStud s1=GetData1();

  SStud s2=GetData2();

  g_s1=g_s;

  g_s2=g_s;

  cout<<s1.nNumb<<‘\t‘<<s1.sName<<‘\t‘<<s1.fMath<<endl;

  cout<<s2.nNumb<<‘\t‘<<s2.sName<<‘\t‘<<s2.fMath<<endl;

  return 0;

}

对象的引用做返回值,对象的引用接收数据。

没有结构体传递数据的问题,将数据传递给EAX,EAX后传递给s1,s2。打印的结果是空。

#include <iostream>

using namespace std;

struct SStud

{

  int nNumb;

  char sName[20];

  float fMath;

}g_s1={1008,"张三",89.5f},g_s2={1009,"李四",91.5f},g_s={0};

SStud& GetData1()

{

  return g_s1;

}

SStud& GetData2()

{

  return g_s2;

}

int main()

{

  SStud& s1=GetData1();

  SStud& s2=GetData2();

  g_s1=g_s;

  g_s2=g_s;

  cout<<s1.nNumb<<‘\t‘<<s1.sName<<‘\t‘<<s1.fMath<<endl;

  cout<<s2.nNumb<<‘\t‘<<s2.sName<<‘\t‘<<s2.fMath<<endl;

  return 0;

}

返回值是对象,接收的类型是对象的引用。

有结构体数据的传递。

发生了2次结构体数据的传递,打印的结果是有效的数据。

#include <iostream>

using namespace std;

struct SStud

{

  int nNumb;

  char sName[20];

  float fMath;

}g_s1={1008,"张三",89.5f},g_s2={1009,"李四",91.5f},g_s={0};

SStud GetData1()

{

  return g_s1;

}

SStud GetData2()

{

  return g_s2;

}

int main()

{

  SStud& s1=GetData1();

  SStud& s2=GetData2();

  g_s1=g_s;

  g_s2=g_s;

  cout<<s1.nNumb<<‘\t‘<<s1.sName<<‘\t‘<<s1.fMath<<endl;

  cout<<s2.nNumb<<‘\t‘<<s2.sName<<‘\t‘<<s2.fMath<<endl;

  return 0;

}

返回值是对象,接收数据是对象,打印的结果是有效的。

#include <iostream>

using namespace std;

struct SStud

{

  int nNumb;

  char sName[20];

  float fMath;

}g_s1={1008,"张三",89.5f},g_s2={1009,"李四",91.5f},g_s={0};

SStud GetData1()

{

  return g_s1;

}

SStud GetData2()

{

  return g_s2;

}

int main()

{

  SStud s1=GetData1();

  SStud s2=GetData2();

  g_s1=g_s;

  g_s2=g_s;

  cout<<s1.nNumb<<‘\t‘<<s1.sName<<‘\t‘<<s1.fMath<<endl;

  cout<<s2.nNumb<<‘\t‘<<s2.sName<<‘\t‘<<s2.fMath<<endl;

  return 0;

}

时间: 2024-08-24 19:36:23

返回值与接收数据的相关文章

(原创)c#学习笔记06--函数02--变量的作用域02--参数和返回值与全局数据

6.2.2  参数和返回值与全局数据 本节将详细介绍如何通过全局数据以及参数和返回值与函数交换数据.先看看下面的代码: class Program { static void ShowDouble(ref int val) { val *= 2; Console.WriteLine("val doubled = {0}", val); } static void Main(string[] args) { int val = 5; Console.WriteLine("val

SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

一.参数的传递 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica } 1.简单的参数传递 1 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ 2 * value:传入的参数名,required:是否必填,defaultValue:默认值 3 * } 4 */ 5 @RequestMapping("itemEdit") 6 public ModelAndView itemEdit(@R

Jmeter 提取http请求返回值里json数据参数化方法

第三方插件下载地址:http://jmeter-plugins.org/downloads/all/ 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录. 查看插件安装是否成功:如图显示[email protected],表示成功.如下图: 使用json表达式提取iUserID.sToken

非阻塞socket中read、write返回值

read返回值 >0   读取数据的长度 =0   接收到对端发送的FIN,表示对端的写端关闭. <0   如果errno=EINTR.收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用read.  如果errno=EAGAIN.表示当前暂时没有数据可读,应该稍后读取. 其它一般表示出错. write返回值 >0   接收数据的长度 <0   如果errno=EINTR.收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EIN

(转) c# ExecuteNonQuery() 返回值 -1

这是之前我遇到问题,在网上找解决方法时找到的,当时复制到txt文档了,今天整理笔记又看到了,贴出来,便于以后查阅.原文的作者没记住~~ 查询某个表中是否有数据的时候,如果用ExecuteNonQuery() 来判断值是否大于0来判断数据的存在与否,是不正确的. SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数. 备注:可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或

将存储过程的返回值赋给变量

1.OUPUT参数返回值 复制代码代码如下: CREATE PROCEDURE [dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint OUTPUT)ASBEGINSET NOCOUNT ON;BEGININSERT INTO [Order](o_buyerid )VALUES (@o_buyerid )SET @o_id = @@IDENTITYENDEND 存储过程中获得方法: 复制代码代码如下: DECLARE @o_buyerid int

ExecuteNonQuery()返回值

查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示:SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数.备注:可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE.INSERT

ThinkPHP中add()方法的返回值

在处理业务数据的时候,有时会遇到需要取得刚insert的数据的主键id值. 以前的做法都是先插入数据后,再通过查询获得id值. 后来在学习ThinkPHP开发的时候才知道,add()方法在写入成功后得返回值就是新增数据的主键值. 减少了代码量.

如何在Shell 中正确的传递函数返回值

Debug 的过成比较无聊,所以这里先上结论和示例,Debug 的笔记看不看并没有什么乱用. 结论 在shell 中使用返回值,唯一具有通用性的方法是使用全局变量,或者使用echo 并在父进程中接收. return 语句不能用来传递计算结果--return 语句是用来传递函数退出状态的,在几乎所有情况下,你的计算结果都不会是退出状态! 任何违反上面规则的shell 脚本,都不具有通用性. 示例 #!/usr/bin/env bash # =============================