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

在void C/C++例程结束时添加return语句有什么意义?

在 C/C++ 中,void 函数是指不返回任何值的函数。当一个函数被声明为 void 类型时,它的作用是告诉编译器这个函数不会返回任何值。因此,在 void 函数的末尾添加 return 语句是没有意义的,因为它并不会返回任何值。

在 C++ 中,如果一个函数被声明为 void 类型,但在函数体中包含了 return 语句,编译器会给出警告,但不会报错。如果一个函数被声明为 void 类型,但在函数体中包含了 return 语句,并且该 return 语句后面跟着一个表达式,那么编译器会忽略该表达式,并仅仅返回函数的结果。

因此,在 void 函数的末尾添加 return 语句是没有意义的,因为它并不会返回任何值。如果你需要在函数中返回一个值,你应该将函数的返回类型更改为适当的类型,并在函数体中使用 return 语句返回一个值。

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

相关·内容

初级工程师面试答案

A、if语句和else语句必须成对出现  B、if语句可以没有else语句对应 C、switch结构中每个case语句中必须用break语句  D、switch结构中必须有default语句   4.return...语句: A、可以让方法返回数值 B、方法都必须含有 C、方法中可以多句return  D、不能用来返回对象   5.throws的作用: A、没有意义  B、表示后面的是方法的输出值 C、表示方法可能会抛出意外...A、都可以main()方法中使用  B、都是指一个内存地址 C、不能用在main()方法中  D、意义相同   21.关于方法的形参,下列说法正确的是?...B、C++和Java都采用unicode编码   CC++和Java中char变量中,变量ch和CH不是同一个变量   D、C++和Java中char类型都是基本类型   33.public class...i=6 j=4   D、 i=5 j=6   E、 i=6 j=6   57.对垃圾回收机制叙述正确的是:(复选题)   A、垃圾回收总是程序结束时由虚拟机启动   B、一个对象没有reference

1.3K10
  • defer in C++Objc

    导语 写过swift的同学应该都知道defer这个关键字,可以让我们函数return之前执行指定的代码,这对于多个提前return而忘记释放资源的函数来说,简直不要太方便了,然而对于swift的前辈...Objective-CC++来说,苹果并没有帮我们定义,因此本文总结一下如何在C++和Objective-C中实现defer。...defer VS return 使用defer过程中,我们需要注意一点,假如我们defer中修改函数的返回值,那么很抱歉,这是没有意义的事情,就好比下列代码: int test { int...究其原因,就是因为return语句并不是原子语句test函数return时,执行的顺序是确定返回值result = 1 -> 执行@onExit -> 函数返回,因此即使@onExit中修改了返回值...参考资料 黑魔法_attribute_((cleanup)) 使用 C/C++ 模拟 defer 关键字

    1K20

    终极 C++避坑指南

    赋值语句的返回值 C/C++的赋值语句自带返回值,这一定算得上一大缺陷, C 中赋值语句返回值, C++中赋值语句返回左值引用。...return *this;   } }; 其他语言的赋值语句 古老一些的 C 系扩展语言基本还是保留了赋值语句的返回值(例如 java、OC),但一些新兴语言(例如 Go、Swift)则是直接取消了赋值语句的返回值...C++中正是由于“赋值语句返回值”和“非布尔类型布尔意义”同时生效,才会在这里出现问题。 解指针类型 关于 C/C++到底是强类型语言还是弱类型语言,业界一直争论不休。...空类大小 解释私有继承的意义之前,我们先来看一个问题,请看下面例程 class T {}; // sizeof(T) = ? T是一个空类,里面什么都没有,那么这时T的大小是多少?...菱形继承与虚拟继承 C++由于支持“普适意义上的多继承”,那么就会有一种特殊情况——菱形继承,请看例程: struct A {   int a1, a2; }; struct B : A {   int

    2.2K20

    分享丨CC++内存管理详解--堆、栈

    内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理C++中无处不在,内存泄漏几乎每个...函数的return语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。   (3). 使用free或delete释放了内存后,没有将指针设置为NULL。...从语法上看,编译器并不觉得语句p[0]= ‘X’什么不妥,但是该语句企图修改常量字符串的内容而导致运行错误。...这里强调不要用return语句返回指向“栈内存”的指针,因为该内存在函数结束时自动消亡,见示例: char *GetString(void){ char p[] = "hello world"; return...了malloc/free为什么还要new/delete malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。

    1K21

    C语言的main函数解析

    void main() 一些书上的,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。...has been C++, nor has it even been C.”这可能是因为 CC++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。...测试代码: #include  main() {     printf("Hello world ");     return 0; } 运行结果: C和C++的标准 C99...return 语句 如果 main 函数的最后没有写 return 语句的话,C99 和++89都规定编译器要自动在生成的目标文件中加入return 0,表示程序正常退出。...不过,建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。linux下我们可以使用shell命令:echo $? 查看函数的返回值。

    2.6K88

    C++ 虚函数表解析

    C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。...C++的编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证取到虚函数表的最高的性能——如果有多层继承或是多重继承的情况下)。...一般继承(虚函数覆盖) 覆盖父类的虚函数是很显然的事情,不然,虚函数就变得毫无意义。下面,我们来看一下,如果子类中有虚函数重载了父类的虚函数,会是一个什么样子?假设,我们下面这样的一个继承关系。...&d)+0);     pFun(); } 结束语 C++这门语言是一门Magic的语言,对于程序员来说,我们似乎永远摸不清楚这门语言背着我们干了什么。...需要熟悉这门语言,我们就必需要了解C++里面的那些东西,需要去了解C++中那些危险的东西。不然,这是一种搬起石头砸自己脚的编程语言。 文章束之前还是介绍一下自己吧。

    1K10

    RAII机制_机制与机理的区别

    什么是RAII RAII的英文全拼是Resource Acquisition Is Initialization的简称,是C++ 语言的一种管理资源、避免内存泄露的方法。...利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,起构造时获取对应的资源,在对象声明周期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。...由于系统的资源不具有自动释放的功能,而C++中的类具有自动调用析构函数的功能。如果把资源用类进行封装起来,对资源操作都封装在类的内部,析构函数中进行释放资源。...你想过,这是为什么呢?网上很多讲RAII的文章,都只是说了这个问题,但是没有说为什么,在这里,我好好的分析一下这里。...说白了,就是拥有了对象,就拥有了资源,对象,资源则在。所以,RAII机制是进行资源管理的有力武器,C++程序员依靠RAII写出的代码不仅简洁优雅,而且做到了异常安全。

    46920

    虚函数实现原理

    C++的标准规格说明书中说到,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)。...下面,我将分别说明“无覆盖”和“覆盖”时的虚函数表的样子。没有覆盖父类的虚函数是毫无意义的。我之所以要讲述没有覆盖的情况,主要目的是为了给一个对比。...一般继承(虚函数覆盖) 覆盖父类的虚函数是很显然的事情,不然,虚函数就变得毫无意义。下面,我们来看一下,如果子类中有虚函数重载了父类的虚函数,会是一个什么样子?...(); } 结束语 C++这门语言是一门Magic的语言,对于程序员来说,我们似乎永远摸不清楚这门语言背着我们干了什么。...需要熟悉这门语言,我们就必需要了解C++里面的那些东西,需要去了解C++中那些危险的东西。不然,这是一种搬起石头砸自己脚的编程语言。 文章束之前还是介绍一下自己吧。

    37820

    C++ 协程篇一:co_yield和co_return

    协程出现之前,C++ 程序员两种选择: 同步代码更容易理解但效率较低。 异步代码(例如回调)更高效(让您在等待事情的同时做其他工作)但也更复杂(手动保存和恢复状态)。...该设计可以移植到 C++ 协同程序。CSP 中的“进程”与 Unix 进程不同。我们的程序(与 McIlroy 的程序不同)是单线程和单进程的( Unix 进程意义上)。...因为是协程,所以它的source末尾一个隐式语句。co_return;其中RType, CYType和CRType分别是Generator, int 和void。...它还有一个(隐式)co_return语句(但不是 co_return foo语句),因此它还需要一个return_void不带参数的方法。...---- 结论 协程某种意义上是神奇的,因为它需要编译器支持,并且不是您可以C++ 中轻松完成的事情(例如,boost 协程依赖于 boost 上下文,并且需要特定于 CPU 体系结构的汇编代码

    2.1K30

    干货 | 深度剖析C语言的main函数

    void main() 一些书上的,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。...has been C++, nor has it even been C.”这可能是因为 CC++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。...C和C++的标准 C99 标准中,只有以下两种定义方式是正确的: int main( void ) int main( int argc, char *argv[] ) 若不需要从命令行中获取参数...return 语句 如果 main 函数的最后没有写 return 语句的话,C99 和++89都规定编译器要自动在生成的目标文件中加入return 0,表示程序正常退出。...不过,建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。linux下我们可以使用shell命令:echo $? 查看函数的返回值。

    1.9K40

    万字长文【C++】高质量编程指南

    2,头文件中只存放声明,而不存放定义,注意:C++语法中,类的成员函数可以再声明的同时被定义,并且自动成为内联函数,这虽然会带来书写上的方便,但却造成了风格不一致,建议将成员函数的定义与声明分开,不论该函数体多么小...c =a +b;//此时a+b并不返回期望值,c什么也得不到,留下隐患 (6)return语句不可返回指向 栈内存 的指针或者引用,因为该内存在函数体结束时被自动销毁 char *FUN(void)...(str); } 4,不要用 return语句返回指向 栈内存的指针,因为该内存在函数结束时自动消亡 char *GetMemory(int num) { char p[] = "hello world...并且,类的构造函数需要重载,C++规定构造函数于类同名,只有一个名字,如果想用几种不同的方法创建对象,只能用重载机制来实现,所以类可以多个同名的构造函数。...//由于编译后的名字不同,C++程序不能直接调用C函数,因此,c++提高了一个C连接交换指定符合 extern “C”来解决这个问题。

    1.5K20

    C++什么会有这么多难搞的值类别

    C++是不同的,因为设计C++的语言体系的时候,就已经完整的C语言了。因此,C++的语言体系建立其实是C的语言体系、编译器实现以及标准库等这些之上,又重新建立的。...考虑上构造和析构函数会怎么样C++C的基础上,为结构体添加了构造函数和析构函数,为了能「屏蔽抽象内部的细节」,将构造和析构函数与变量的生命周期进行了绑定。...xvalue会在当前语句结束时立刻析构,而lvalue会在所属代码块结束时再析构。...C++设计时应当很单纯地认为value分两类:一类是变量,一类是值。变量它有内存实体,可以出现在赋值语句的左边,所以称为「左值」;值没有内存实体,只能出现在赋值语句的右边,所以称为「右值」。...三种方法:1.用变量接收;2.用常引用接收;3.用右值引用接收。那么这里,C++又从「语义」上做了区分。当右值引用做函数参数时,认为优先匹配函数返回值。什么意思呢?

    1.1K52

    C++系列笔记(一)

    【导读】《21天学通C++》这本书通过大量精小短悍的程序详细而全面的阐述了C++的基本概念和技术,包括管理输入/输出、循环和数组、面向对象编程、模板、使用标准模板库以及创建C++应用程序等...第一章(上) 1、C++中,可不显示地指定变量类型,使用关键字auto例如:auto flag=true。这里将指定变量flag的类型交给了编译器,编译器会自动确定变量应为什么类型。...0; } 5、语句、运算符要将一条放到两行中,可在第一行末尾添加反斜杠(\),也可将字符串字面量分成两个,如下例: cout << "hello \ world" << endl;...一个函数可以包含多条return语句。7、函数重载名称和返回类型相同,参数不同的函数称为重载函数。应用程序中,如果使用不同的参数调用具有特定名称和返回类型的函数,重载函数将很有用。...(Num2 < Num1); }); DisplayNums(MyNumbers); return 0; } 当定义函数提供形式参数时,要将所有默认参数值的参数放在列表末尾

    34030

    内存、引用、封装、函数

    内存内存分区模型代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量、静态变量和常量栈区:由编译器自动分配释放,存放函数的参数值、局部变量等堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收内存分区意义...return &a;//返回局部变量地址}堆区:由程序员分配释放,若程序员不释放,程序结束时,由操作系统回收在C++中主要利用new堆区开辟内存int* test(){ //利用new关键字...,则从这个位置往后,从左到右,都必须有默认值//如果某个位置已经了默认参数,则从这个位置往后,从左到右,都必须有默认值void test0(int a, int b = 10, int c = 10)...b;}函数占位参数C++函数的形参列表里可以占位参数,用来做占位,调用函数时必须填补该位置语法:返回值类型 函数名 (数据类型) {}//占位参数也可以默认参数void test(int a, int...0;}当函数重载碰到默认参数,会出现二义性C++面向对象的三大特性:封装、继承、多态C++认为万事万物皆为对象,对象上有其属性和行为具有相同性质的对象,我们可以抽象成为类,人属于人类,车属于车类封装封装的意义将属性和行为作为一个整体

    75700

    C语言指针知识大汇总

    例一中, 指针所指向的类型已经了, 但由于指针还未初始化, 所以它所指向的内存区是不存在的, 或者说是无意义的。 以后, 每遇到一个指针, 都应该问问: 这个指针的类型是什么?...如图:pa1所指向的地址pa0所指向地址往后8字节处,pa2指向地址pa1指向地址往前4字节处。 从本示例程序中,还可以看出:连续定义的变量在内存的存储可能是紧挨着的,可能是分散着的。...如: int a=1,b=2,c=3; int *arr[3] = {&a,&b,&c}; 示例程序: #include int main(void) { int a = 1,...C", "hello C++", "hello Java" }; printf("%s\n%s\n%s\n", str[0], str[1], str[...2]); return 0; } 运行结果为: hello C hello C++ hello Java 3、二维数组指针 二维数组指针:指向二维数组的指针。

    1.3K74

    C++基础-类和对象

    本文为 C++ 学习笔记,参考《Sams Teach Yourself C++ in One Hour a Day》第 8 版、《C++ Primer》第 5 版、《代码大全》第 2 版。...面向对象编程四个重要的基础概念:抽象、封装、继承和多态。本文整理 C++ 中类与对象的基础内容,涉及抽象和封装两个概念。《C++基础-继承》一文讲述继承概念。《C++基础-多态》一文讲述多态概念。...这些内容是 C++ 中最核心的内容。 抽象 抽象是一种忽略个性细节、提取共性特征的过程。当用“房子”指代由玻璃、混凝土、木材组成的建筑物时就是使用抽象。...参"C++ Primer 5th"第 40 页 下面这个类因为没有任何构造函数,所以编译器会生成合成的默认构造函数: class Human { pubilc: // 成员方法: void...strlen(buffer); } const char* GetString() { return buffer; } }; void UseMyString(MyString str)

    97620

    Halcon HDEVELOP 工程导出集成到 C++ 应用程序

    、系统变量 Halcon 导出到 C++ Halcon 中调试和开发图像处理算法更加便利快捷 开发完成的项目可以以工程或代码形式导出,导出后可以直接供 C++ 调用 通过工程导出的 Halcon...Variable Inspect 插件中看到运行效果: 表明我们已经成功 VS 中导入 Halcon 工程 修改 Halcon 工程 通过 Halcon 导出工程 植入 VS 的代码个好处是修改...hdev 的函数代码,添加筛选连通域的语句,保存工程 threshold (Image, Region, MinGray, 255) connection (Region, ConnectedRegions...语言选择 C++ 导出后发现在原始 hdev 文件旁边多了个 cpp 文件,就是我们导出的代码 Halcon 工程中我们核心的函数就是 get_printer_chip_regions...; } 将其加入到 C++ 工程中,之前的 C++ 代码变为 #include "HalconCpp.h" using namespace HalconCpp; void get_printer_chip_regions

    2.2K40
    领券