首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当函数中没有指定返回时,C++程序如何获得它们的返回值?

在C++中,当函数没有指定返回值时,可以通过以下几种方式获得函数的返回值:

  1. 使用引用参数:可以将函数的返回值通过引用参数传递给调用函数。在函数定义时,将返回值类型改为void,并在参数列表中添加一个引用参数,通过该参数将返回值传递给调用函数。

示例代码:

代码语言:cpp
复制
void getReturnValue(int& result) {
    // 在函数中计算返回值
    int returnValue = 10;
    // 将返回值通过引用参数传递给调用函数
    result = returnValue;
}

int main() {
    int value;
    getReturnValue(value);
    // value 将获得函数的返回值
    return 0;
}
  1. 使用指针参数:类似于引用参数,可以将函数的返回值通过指针参数传递给调用函数。在函数定义时,将返回值类型改为void,并在参数列表中添加一个指针参数,通过该指针参数将返回值传递给调用函数。

示例代码:

代码语言:cpp
复制
void getReturnValue(int* result) {
    // 在函数中计算返回值
    int returnValue = 10;
    // 将返回值通过指针参数传递给调用函数
    *result = returnValue;
}

int main() {
    int value;
    getReturnValue(&value);
    // value 将获得函数的返回值
    return 0;
}
  1. 使用全局变量:可以在函数外定义一个全局变量,函数中将返回值赋给该全局变量,然后在调用函数中访问该全局变量来获取返回值。

示例代码:

代码语言:cpp
复制
int returnValue; // 全局变量

void getReturnValue() {
    // 在函数中计算返回值
    returnValue = 10;
}

int main() {
    getReturnValue();
    // returnValue 将获得函数的返回值
    return 0;
}

需要注意的是,使用全局变量可能会引起命名冲突和不可预测的行为,因此不推荐频繁使用全局变量来获取函数的返回值。

以上是在C++中获取函数返回值的几种常见方式,根据具体情况选择合适的方式来获取函数的返回值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android JNI 线程操作

第三个参数为该线程启动程序函数指针,也就是线程启动要执行那个方法,类似于 Java Runnable run 方法,它函数签名格式如下: void* start_routine(void*...第四个参数为线程启动程序参数,也就是函数参数,如果不需要传递参数,它可以为 NULL 。 pthread_create 函数如果执行成功了则返回 0 ,如果返回其他错误代码。..."); // 切记要有返回值 return NULL; } 要注意线程启动函数是要有返回值没有返回值就直接崩溃了。...pthread_create 创建线程是一个 C++ 线程,虚拟机并不能识别它们,为了和 Java 空间交互,需要先把 POSIX 线程附着到 Java 虚拟机上,然后就可以获得当前线程 JNIEnv...等待线程返回结果 前面提到在线程运行函数必须要有返回值,最开始只是返回了一个空指针 NULL ,并且在某个方法里面开启了新线程,新线程运行后,该方法也就立即返回退出,执行完了。

1.1K20

C++函数基础篇

⭐本文介绍⭐ 函数是一组一起执行一个任务语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单程序都可以定义其他额外函数。 您可以把代码划分到不同函数。...如何划分代码到不同函数是由您来决定,但在逻辑上,划分通常是根据每个函数执行一个特定任务来进行函数声明 告诉编译器函数名称、返回类型和参数。函数定义提供了函数实际主体。...在这种情况下,您应该在调用函数文件顶部声明函数。 调用函数 创建 C++ 函数,会定义函数做什么,然后通过调用函数来完成已定义任务。 程序调用函数程序控制权会转移给被调用函数。...被调用函数执行已定义任务,函数返回语句被执行时,或到达函数结束括号,会把程序控制权交还给主程序。 调用函数,传递所需参数,如果函数返回一个值,则可以存储返回值。...一般来说,这意味着函数代码不能改变用于调用函数参数。之前提到实例,调用 max() 函数,使用了相同方法。 参数默认值 您定义一个函数,您可以为参数列表后边每一个参数指定默认值。

32720
  • c++ new和malloc区别

    关于C++类型安全性可说又有很多了。  3.内存分配失败返回值  new内存分配失败,会抛出bac_alloc异常,它不会返回NULL;malloc分配内存失败返回NULL。...,因为数据成员a,b值并没有得到初始化,这也是上面我为什么说使用malloc/free来处理C++自定义类型不合适,其实不止自定义类型,标准库凡是需要构造/析构类型通通不合适。 ...而使用new来分配对象:  int main() {     A * ptr = new A; }  查看程序生成汇编代码可以发现,A默认构造函数被调用了:  6.对数组处理  C++提供了new...客户处理内存分配不足  在operator new抛出异常以反映一个未获得满足需求之前,它会先调用一个用户指定错误处理函数,这就是new-handler。...new_handler是一个指针类型:  namespace std {     typedef void (*new_handler)(); }  指向了一个没有参数没有返回值函数,即为错误处理函数

    98000

    十三、异常、类型转换和 lambda

    std::range_error:函数接收到一个无效范围抛出(尽管在标准库没有直接继承自std::range_error常用异常,但它被用作一个基类)。...非异常 在C++,错误处理是一个重要方面,它涉及到如何优雅地处理程序可能发生错误情况。C++提供了几种机制来处理错误,其中非异常处理是其中一种方式。...非异常处理通常依赖于返回值、错误码(error codes)、输出参数(out parameters)以及全局状态(如errno)等。 返回值 最常见非异常错误处理方式是使用函数返回值。...全局状态(如errno) 在C(和兼容CC++代码),errno是一个全局变量,用于报告函数调用错误状态。某些库函数(如I/O函数)失败它们会设置errno以指示具体错误类型。...这使得函数能够返回一个值或者表示没有返回情况,而不需要使用特殊错误码、指针、特殊返回值(如使用 -1 表示错误或 nullptr 表示空),或者抛出异常。

    6710

    C++ 默认参数与引用传递:语法、用法及示例

    C++ 默认参数默认参数概述在 C++ 函数参数可以拥有默认值。这意味着,在调用函数,如果省略了某个参数,那么将使用为该参数指定默认值。...这意味着,如果在调用 myFunction 没有显式指定 country 参数,那么函数将使用 "Norway" 作为其值。...age 参数拥有默认值 18,这意味着如果在调用函数没有显式指定 age 参数,那么将使用 18 作为其值。函数返回值和默认参数默认参数仅适用于函数参数,不适用于函数返回值。...函数返回值类型由函数声明类型决定,与默认参数无关。总结C++ 默认参数是一种方便功能,可以简化函数调用并提高代码可读性。...调用 swapNums 函数,它将直接访问 firstNum 和 secondNum 变量内存地址,并交换它们值。

    85110

    C++异常处理深度探索:从基础概念到高级实践策略

    以下是一些C语言中处理错误常见方法: 1.1 返回值检查 C语言中许多标准库函数返回一个整数值来指示成功或失败。通常,返回值0表示成功,而非零值表示发生了错误。...这些代码在头文件定义。在检查函数返回值后,可以检查errno来获取更具体错误信息。...} 需要注意是,C语言没有内置异常处理机制,因此所有错误处理都必须通过返回值、全局变量、或指针参数等显式地进行。...catch:用于捕获try块抛出异常,并对其进行处理。catch块通常会跟在try块后面,并指定要捕获异常类型。 throw:程序检测到错误时,可以使用throw关键字抛出一个异常。...异常安全性:在设计异常安全代码,了解函数是否可能抛出异常以及它们如何处理异常是非常重要。使用noexcept可以帮助明确这一点。

    14910

    蓝桥ROS机器人之C++基础2总结和测评

    如果函数不向调用者返回值,则它们返回类型可以是void 。未能从非 void 函数返回值将导致未定义行为。 函数main返回值称为状态码,它告诉操作系统(以及任何其他调用程序程序是否成功执行。...按照共识,返回值 0 表示成功,正返回值表示失败。 函数参数是函数中使用变量,其值由函数调用者提供。参数是从调用者传递给函数特定值。一个参数被复制到参数,这称为按值传递。...C++ 没有定义函数调用是否从左到右评估参数,反之亦然。 函数体内部定义函数参数和变量称为局部变量。变量存在时间称为它生命周期。变量是在运行时创建和销毁,也就是程序运行时候。...在包含头文件,在包含系统头文件(例如 C++ 标准库头文件)使用尖括号,在包含用户定义头文件(您编写头文件)使用双引号。包含系统头文件,如果存在不带 .h 扩展名版本,请包含它们。...该程序应使用三个功能: 应该使用名为“readNumber”函数从用户那里获取(并返回)一个整数。 应该使用名为“writeAnswer”函数来输出答案。这个函数应该接受一个参数并且没有返回值

    76640

    C++ 为进程、线程分配 CPU 资源

    简介 一个程序运算很充分(IO等操作很少)指定到单独一个CPU上运行会比不指定CPU运行时快。这中间主要有两个原因: CPU切换损耗性能。...然而,Inter又有一个技术叫做SpeedStep,一个CPU没有满负荷运行时自动降频从而达到节能减排目的。...返回值 如果该函数成功,则返回值为非零值。 如果函数失败,则返回值为零。 要获得更多错误信息,请调用 GetLastError。...如果调用进程包含多个组线程,则函数返回这两个关联掩码零。...返回值 如果函数成功,则返回值为线程上一个关联掩码。 如果函数失败,则返回值为零。 要获得更多错误信息,请调用 GetLastError。

    3.2K70

    细说new与malloc10点区别

    而堆是操作系统术语,是操作系统所维护一块特殊内存,用于程序内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配对应内存。...关于C++类型安全性可说又有很多了。 3.内存分配失败返回值 new内存分配失败,会抛出bac_alloc异常,它不会返回NULL;malloc分配内存失败返回NULL。...可以看出A默认构造函数没有被调用,因为数据成员a,b值并没有得到初始化,这也是上面我为什么说使用malloc/free来处理C++自定义类型不合适,其实不止自定义类型,标准库凡是需要构造/析构类型通通不合适...客户处理内存分配不足 在operator new抛出异常以反映一个未获得满足需求之前,它会先调用一个用户指定错误处理函数,这就是new-handler。...new_handler是一个指针类型: namespace std { typedef void (*new_handler)(); } 指向了一个没有参数没有返回值函数,即为错误处理函数

    1.5K52

    C++ 面试必备:常见 C++ 面试题汇总及详细解析

    指针是C++一种数据类型,指针变量存储了一个内存地址,该地址指向某个变量或者对象。指针可以用来访问和修改内存数据,同时也可以通过指针来传递参数和返回值。...基类某个虚函数在派生类中被重新定义,如果派生类对象调用该函数,则会覆盖掉基类实现,执行派生类实现代码。在进行对象多态性转换,重写非常重要。...一个类包含至少一个虚函数,它就被称为虚类或抽象类。这些虚函数由子类重写,使得它们可以根据需要对基类行为进行扩展和修改。通过使用虚函数可以实现动态绑定和运行时多态。...函数将根据其实现过程来计算参数并进行其他操作,然后返回一个结果,该结果通常被保存在寄存器函数返回 函数执行完毕,需要将返回值存储,并恢复主函数栈帧及处理状态。...函数返回,会跳转回调用它函数位置。此时,程序会弹出函数栈帧,将返回值传递给调用者,并恢复调用者寄存器和栈。 左值和右值 左值和右值 ??

    2.1K30

    Linux进程控制

    一.进程创建 fork()函数: 在进程概念这篇文章,我们浅浅地了解了一下fork函数,它功能是让父进程去创建一个子进程,并且有两个返回值,对应着父进程返回值和子进程返回值。...#include pid_t fork(void); 返回值:子进程返回0,父进程返回子进程id,出错返回-1 先来看三个问题: 1.如何理解fork函数有两个返回值问题?...2.如何理解fork函数返回后,子进程返回0,父进程返回子进程id? 3.如何理解同一个id值,为什么会保存两个不同值,让if  else  if同时执行?...①如果子进程已经退出,调用wait/waitpid,wait/waitpid会立即返回,并且释放资源,获得子进程退出信息。...如果调用出错则返回-1 所以exec函数只有出错返回值没有成功返回值。因为成功返回值没有必要,都已经替换了进程了,即使返回了,这个值也用不了。

    2.4K30

    精选 30 个 C++ 面试题(含解析)

    C++多态性具体体现在运行和编译两个方面:在程序运行时多态性通过继承和虚函数来体现;在程序编译多态性体现在函数和运算符重载上; 虚函数:在基类冠以关键字 virtual 成员函数。...主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选方案包括:返回一个对象、返回一个局部变量引用,返回一个new分配对象引用、返回一个静态对象引用。...const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被const修饰东西都受到强制保护,可以预防意外变动,能提高程序健壮性。 1)const 常量有数据类型,而宏常量没有数据类型。...在定义该const变量,通常需要对它进行初始化,因为以后就没有机会再去改变它了; (2)对指针来说,可以指定指针本身为const,也可以指定指针所指数据为const,或二者同时指定为const; (...,有时候必须指定返回值为const类型,以使得其返回值不为“左值”。

    1.5K30

    【答疑释惑】C++异常处理是咋回事?

    还有一个缺点就是函数返回值只有一个,你通过函数返回值表示错误代码,那么函数就不能返回其他值。当然,你也可以通过指针或者C++引用来返回另外值,但是这样可能会令你程序略微晦涩难懂。...四、异常为什么好 在如果使用异常处理优点有以下几点: 1. 函数返回值可以忽略,但异常不可忽略。如果程序出现异常,但是没有被捕获,程序就会终止,这多少会促使程序员开发出来程序更健壮一点。...而如果使用C语 言error宏或者函数返回值,调用者都有可能忘记检查,从而没有对错误进行处理,结果造成程序莫名其面的终止或出现错误结果。 2. 整型返回值没有任何语义信息。...函数异常抛出列表:java是如果一个函数没有在异常抛出列表显式指定要抛出异常,就不允许抛出;可是在C++是如果你没有函数异常抛出列表指定要抛出异常,意味着你可以抛出任何异常。 4....C++编译不会检查函数异常抛出列表。这意味着你在编写C++程序时,如果在函数抛出了没有在异常抛出列表声明异常,编译是不会报错。而在java,eclipse提示功能真的好强大啊!

    89950

    C++经典面试题(最全,面率最高)

    在More Effective C++中有更为详细解释:“delete操作符用于数组,它为每个数组元素调用析构函数,然后调用operator delete来释放内存。”...C++多态性具体体现在运行和编译两个方面:在程序运行时多态性通过继承和虚函数来体现; 在程序编译多态性体现在函数和运算符重载上; 虚函数:在基类冠以关键字 virtual 成员函数。...(2)使用引用传递函数参数,在内存没有产生实参副本,它是直接对实参操作;而使用一般变量传递函数参数,发生函数调用时,需要给形参分配存储单元,形参变量是实参变量副本;如果传递是对象,还将调用拷贝构造函数...它们不能返回引用,Effective C++[1]Item23详细讨论了这个问题。...主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选方案包括:返回一个对象、返回一个局部变量引用,返回一个new分配对象引用、返回一个静态对象引用。

    1.9K30

    「音视频直播技术」看ijkplayer如何使用JNI

    Java代码真正调用 “native” 方法,JavaVM虚拟机会在自己符号表查找有没有 Java 程序想调用函数。如果此时还没有的话,JavaVM 就会报错。...有没有赶快去试试冲动?先别急,现在只介绍了如何从 Java 调用 C/C++方法。那么反回来如何从 C/C++ 调 Java 代码呢?...方法参数包含在“()”返回值在括号外! 方法参数个数较多时会依次以“;”隔开。 参数或者返回值是基本数据类型,必须用其在JNI描述符表示。...Java类型 符号 boolean Z byte B char C short S int I long L float F doubl D void V 方法参数或者返回值为java对象,必须以...参数或者返回值为数组,前面必须加上“[”。 以上就是Signature表示方法规则! 看看下面一些Signature,你能一个个转换为相应方法吗?

    2.1K10

    c++面试选择题_C语言经典笔试题

    C++多态性具体体现在运行和编译两个方面: 在程序运行时多态性通过继承和虚函数来体现; 在程序编译多态性体现在函数和运算符重载上; 虚函数:在基类冠以关键字 virtual 成员函数。...(2)使用引用传递函数参数,在内存没有产生实参副本,它是直接对实参操作;而使用一般变量传递函数参数,发生函数调用时,需要给形参分配存储单元,形参变量是实参变量副本;如果传递是对象,还将调用拷贝构造函数...它们不能返回引用,Effective C++[1]Item23详细讨论了这个问题。...主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选方案包括:返回一个对象、返回一个局部变量引用,返回一个new分配对象引用、返回一个静态对象引用。...const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰东西都受到强制保护,可以预防意外变动,能提高程序健壮性。 1) const 常量有数据类型,而宏常量没有数据类型。

    1.1K10

    嵌入式软件工程师笔试面试指南-CC++

    format: 指定变参函数格式输入字符串所在函数位置以及对应格式输出位置。 noreturn: 指定这个函数没有返回值。...构造函数没有返回值,那么如何得知对象是否构造成功? 这里“构造”不单指分配对象本身内存,而是指在建立对象初始化操作(如打开文件、连接数据库等)。...因为构造函数没有返回值,所以通知对象构造失败唯一方法就是在构造函数抛出异常。构造函数抛出异常将导致对象析构函数不被执行,对象发生部分构造,已经构造完毕子对象将会逆序地被析构。...C++可以给函数定义默认参数值。在函数调用时没有指定与形参相对应实参,就自动使用默认参数。 默认参数语法与使用: (1) 在函数声明或定义,直接对参数赋值,这就是默认参数。...因为C++不支持友元函数继承,对于没有继承特性函数没有函数说法。 C++如何阻止一个类被实例化? C++可以通过使用抽象类,或者将构造函数声明为private阻止一个类被实例化。

    1.6K11

    C++入门

    前言: 本文主要讲解C++解决了C语言哪些语法不足,C++如何改进。 一、命名空间 命名空间形象来说就是一堵墙,将我们库围起来了,没有命名空间访问权限,外面就不能使用库里面的内容!...二、缺省参数:(舔狗) 缺省参数是声明或定义函数函数参数指定一个缺省值。 在调用该函数,如果没有指定实参则采用该形参缺省值,否则使用指定实参。...但在C++,运用了函数名修改规则 _Z 函数名字符个数 函数名 参数首字母 函数只有声明,没有定义,会在链接时候报错,链接意义是链接一些没有确定函数地址 四、引用: 引用不是新定义一个变量,而是给已存在变量取了一个别名...引用返回价值: 第一个价值:提高效率 传值返回函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回类型,效率是非常地下,尤其是参数或者返回值类型非常大...内联函数概念: 以inline修饰函数叫做内联函数,编译C++编译器会在调用内联函数地方展开,没有函数调用建立栈帧开销,内联函数提升程序运行效率。

    5510

    SWIG 官方文档第三部分 - 机翻中文人肉修正

    11.3.4 多参数 typemap 指定多参数 typemap 它们优先于为单个类型指定任何类型映射。... numinputs 设置为 0 ,该参数实际上被忽略并且无法从目标语言提供。在进行 C/C++ 调用时仍然需要该参数,并且上面的类型映射显示所使用值是从名为 temp本地声明变量获得。...$symname - 被包装函数/方法名称 提供给“argout”类型映射代码总是放在“out”类型映射之后。如果使用多个返回值,则额外返回值通常会附加到函数返回值。...它只有在按值返回对象才真正产生影响,并且在使用上有一些限制,稍后会解释。 函数按值返回对象,SWIG 会生成代码来实例化堆栈上默认类型,然后将函数调用返回值分配给它。...) { croak("Out of memory"); } } 提供类前缀,异常处理程序将应用于指定相应声明以及派生类中出现同名函数

    3.6K30

    CVTE2017秋季校招一面回忆(C++后台岗)

    4.C如何模拟实现C++C++定义类最大特点是使程序面向对象而不是面向过程,这在C没有体现。...鉴于析构函数总是由编译器来生成调用析构函数代码,以确保它们被执行,如果析构函数返回值,要么编译器必须知道如何处理返回值,要么就只能由客户程序员自己来显式调用构造函数与析构函数,这样一来,安全性就被破坏了...所以析构函数同构造函数一样,不能为之指定返回值。 16.C++构造函数返回值如何判断对象是否“构造”成功 两个办法。...槽: 槽是普通C++成员函数,可以被正常调用,它们唯一特殊性就是很多信号可以与其相关联。与其关联信号被发射,这个槽就会被调用。...指定信号signal必须使用QT宏SIGNAL(),指定函数必须使用宏SLOT()。如果发射者与接收者属于同一个对象的话,那么在connect调用接收者参数可以省略。

    1.2K20
    领券