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

C++或C中foo(void)和foo()之间有区别吗?

在C++或C语言中,foo(void)和foo()之间没有区别。这两种写法都表示函数foo不接受任何参数。在C语言中,通常使用foo()来表示不接受参数的函数,而在C++中,更推荐使用foo(void)来表示不接受参数的函数。但是,这两种写法在功能上是相同的。

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

相关·内容

c++c语言之间什么区别

C语言与C++区别有很多:   CC++的最大区别:在于它们的用于解决问题的思想方法不一样。...2,C语言标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件;而C++对于大多数的函数都是集成的很紧密,特别是C语言中没有的C++的API是对Window系统的大多数API有机的组合,...3,特别是C++的图形处理,它语言的图形很大的区别C语言中的图形处理函数基本上是不能用在C++的。C语言标准不包括图形处理。...4,CC++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++结构,它可以自己的成员变量成员函数。...8,C++对可以自动生成你想要的程序结构使你可以省了很多时间。很多可用的工具如加入MFC的类的时候,加入变量的时候等等。

2K30

C++结构体类的区别_c++结构体

堆的空间相对较大.但是存储在堆的数据的访问效率相对较低. 3.类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体也可以继承,也可以函数(c结构体没有函数),...,空结构体的大小为0,而C++中空结构体/类 的大小为1。...C++中空类的大小为1的原因:   空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存的地址不同,所以在类中会加入一个隐含的字节。...int in; virtual void func() { } }; int main() { A a; B b; C c; D d; cout<<sizeof(a)<<endl;//result=...如发现本站涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

93110

CC++工程师面试题(指针篇)

什么是函数指针,如何定义函数指针,与指针函数区别 参考链接:函数指针指针函数区别 智能指针 参考链接:智能指针的用法 指针常量常量指针常量指针常量 define与const关键字的多种用法...-CSDN博客 nullptr调用成员函数可以?...用freedelete释放了内存之后,立即将指针设置为NULL,防止“野指针” c++指针引用的区别 指针可以被重新赋值指向其他变量,而引用一旦绑定到一个变量上就不能再绑定到其他变量上。...传参区别 #include using namespace std; void foo(int* ptr) {//指针 *ptr = 42; cout<<"*ptr..."Double free"是一种内存管理错误,通常发生在动态内存分配释放的情境。它指的是尝试多次释放同一块内存的错误行为。这种错误可能会导致程序崩溃、不稳定性数据损坏。

12110

【译】理解CC++的左值右值

“右值”在CC++编程并不经常使用,但一旦使用到左值右值,它们的含义好像并非那么清楚。...cv限定非cv限定的版本是两种不同的类型,但它们要有相同的representation(?)对齐要求。 这右值什么联系?在C,右值不会有cv限定符,只有左值。...在C++,类的右值可以cv限定符,但内置类型(int、double等)不可以。...再次说明,上述示例只是右值引用移动语义的冰山一角。正如你们所想,右值引用移动语义是及其复杂的一个分支,需要考虑一些特殊的场景目标。笔者在这里只是简单的展示了在C++左值右值的区别。...然而,本文的目的是想帮助各位对C++代码更深入的理解,并且能更加容易理解程序语言专家们制定的规范。 另一方面,C++11介绍了右值引用移动语义,新的C++规范关于左值右值的论述越来越重要。

1.1K10

C++面试题

C++面试3 1、WebSocketSocket什么区别? 2、对高并发熟悉么?你们做的TCP Server并发量高么? 3、你最近的一份工作遇到的一个难点问题是什么?你是怎么解决的?...9、WebSocketSocket什么区别? 10、谈谈Qt的DBus C++面试5 1、STL vector做大量push_back操作时会出现什么问题?...struct A { virtual void foo(void) { } } struct B: public A { void foo(void) { foo(); // 递归调用自己,即...C++面试7 1、二级指针 指针的指针一般用来做什么? 2、动态数组使用C语言怎么实现? 3、对Linux熟悉? 4、进程线程什么区别?线程间的数据可以共享么?...5、TCPUDP的什么区别? TCP服务端、客户端的实现流程一般是什么样的? UDP需要建立连接么? 6、信号量一般怎么使用,熟悉么? 7、C语言或者C++static关键字的作用? 1.

2.2K30

c++系列之二 指向成员函数的指针(烧脑)

关于成员函数指针 成员函数指针是C++最少用到的语法之一,甚至经验的C++码农有时候也会被它搞晕。这是一篇针对于初学者的教程,同时也给经验的码农分享了一些我个人对底层机制的挖掘。...除了它其它的类成员共享命名空间Foo(在我们的例子命名空间是 Foo:: )之外,它常规全局函数是一样的。...另外,为什么C++如此费心地去发明这样的语法?很简单,因为它常规指针是不同的东西,而且这样的类型转换也是违反直觉的。...因为 “一个指向虚成员的指针能在不同地址空间之间传递,只要二者使用的对象布局一样” (此话来自C++老爸 Bjarne Stroustrup 的 《C++程序设计语言》 )。...结论 简单总结一下,通过上述文章,我们学到了: 成员函数指针声明定义的语法 使用成员指针选择操作符来调用成员函数的语法 使用 typedef 写出更加清晰的代码 非虚成员函数、虚函数、静态成员函数之间区别

2.8K20

内联函数 c-浅谈内联函数与宏定义的区别详解

文章(二)   8.5.1 用内联取代宏代码   C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。   在 C程序,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函数。...C++ 语言的函数内联机制既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员。所以在C++ 程序,应该用内联函数取代所有宏代码,“断言assert”恐怕是唯一的例外。...类的构造函数析构函数容易让人误解成使用内联更有效。要当心构造函数析构函数可能会隐藏一些行为,如“偷偷地”执行了基类成员对象的构造函数析构函数。...每个类只有一个析构函数一个赋值函数,但可以多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。...原因如下:   (1)如果使用“缺省的无参数构造函数”“缺省的析构函数”,等于放弃了自主“初始化”“清除”的机会,C++发明人的好心好意白费了。

61040

Lua的函数式编程

查到的问题后,我足足想了5分钟才明白过来为什么sock会被GC掉。 因为潜意识foo.lua类似于下面C代码,其中sock变量是与整个C代码的生命周期一致的。而在C语言中,代码是不会被回收的。...却从来没在意过,整个编程范式,数据的生命周期是以何种方式被管理着,以及数据在以何种方式进行转换通信。 借着这个Bug的契机,我从数据的视角来重新审视了一下这些话,了一些意想不到的发现。...在纯面向对象编程语言中(C++显然不算),所有的逻辑交互均是在对象之间产生的,不允许变量产生在对象之外。 即使他们在努力的模仿函数式编程,比如所谓的委托,匿名函数。...:"如果一个语言支持将函数作为参数传入其他函数,将其作为值从其他函数返回,并且将它们向变量赋值将他们存储在数据结构,就在这门语言中,函数是一等公民。...我认为对于C/C++背景的人来讲,这不足以解释函数式编程的特点。 因为在C/C++语言中,函数指针同样可以做到上述所有的事情。

1.1K20

【CC++】extern 的一些注意事项

前言 前些日子,友友问了我这样的一道问题: 数组通过外部声明为指针时,数组指针是不能互换使用的;那么请思考一下,在 A 文件定义数组 char a[100];在 B 文件声明为指针:extern...char *a;此时访问 a[i],会发生什么; 先说结果,会引起 segmentation fault 报错; 那接下来由博主来分析一番; 数组与指针的区别 在介绍 extern 之前,我们需要了解一下数组与指针什么区别...具体分析 了解了数组与指针的区别之后,让我们来看看 extern 声明全局变量的内部实现; extern 是 C/C++ 语言中表明函数全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数变量可以在本模块其它模块中使用...例如,假设某个函数的原型为: void foo( int x, int y ); 该函数被 C 编译器编译后在符号库的名字为 _foo,而 C++ 编译器则会产生像 _foo_int_int 之类的名字...例如,在 C++ ,函数 void foo(int x, int y) 与 void foo(int x, float y) 编译生成的符号是不相同的,后者为 _foo_int_float。

27510

计算机考研复试C语言常见面试题「建议收藏」

C++C区别 2 3、Java的方法重载 2 4、重写重载 2 5、面向对象编程 3 6、c++可以多个父类 3 7、指针与引用 4 8、structclass的区别C++) 4 9、c+...2、C++C区别 设计思想上: C++是面向对象的语言,而C是面向过程的结构化编程语言 语法上: C++具有封装、继承多态三种特性 C++相比C,增加了许多类型安全的功能,比如强制类型转换、 C+...4、重写重载 5、面向对象编程 (1)封装:将数据函数集合在一个类类。 (2)继承:子类可以继承父类的一些数据函数。 (3)多态:运行时,可以通过指向基类的指针,调用派生类的方法。...) 引用初始化后不能再引用其他对象 8、structclass的区别C++) 共同点:structclass都可以定义成员函数,都具有继承、多态。...它是对对象的一种弱引用,不会增加对象的引用计数,shared_ptr之间可以相互转化。

1.5K30

60秒问答:多态函数重载的关系?

名词隐藏机制重载 new 函数 例子(liunx api返回值设计 1返回错误 2 抛异常3 抛信号) 隐藏可以避免,在c++11呢?...编译时的多态:函数重载运算符重载(根据参数不同选择具体函数 ) 运行时的多态:通过类继承虚函数实现的(根据虚表指针 指向 派生类的函数,还是基类的函数) 四、 类型转换有几种情况,什么区别?...这个概念很模糊,不清楚, 就是具体执行那个函数? case1. if a if b, if c 是多态?表现不一样。...[定义] C++支持两种多态性:编译时多态性,运行时多态性。 1.编译时的多态:函数重载运算符重载,在编译时就决定调用哪个函数,先期联编 early binding ?...编译时的多态:函数重载运算符重载(根据参数不同选择具体函数 ) 运行时的多态:通过类继承虚函数实现的(根据虚表指针 指向 派生类的函数,还是基类的函数) 四、 类型转换有几种情况,什么区别

1.2K10

C++单继承、多继承情况下的虚函数表分析

C++的三大特性之一的多态是基于虚函数实现的,而大部分编译器是采用虚函数表来实现虚函数,虚函数表(VTAB)存在于可执行文件的只读数据段,指向VTAB的虚表指针(VPTR)是包含在类的每一个实例当中。...《深度探索C++对象模型》 一、单继承 1 #include 2 #include 3 using namespace std; 4 class A {...再简单总结一下 覆盖 隐藏 重载 的区别: 覆盖 是C++虚函数的实现原理,基类的虚函数被子类重写,要求函数参数列表相同; 隐藏 是C++的名字解析过程,分两种情况,基类函数virtual,参数列表不同...,基类函数没有virtual,无论参数列表是否相同。...重载 是在同一命名空间中根据参数对同名函数的区别

2.5K10

盘点C++20模块那些事

C++20引入了一种替代 #include 指令的新方式,称为模块。 下面来深入学习一下模块。 1.模块单元 C++模块由一个多个翻译单元(tu)组成,其中包含用于模块声明的特定关键字。...其目的是将模块的接口实现封装在单个翻译单元,而不暴露实现细节。 例如:我想要创建一个Shape,计算其面积。...g++-13 -std=c++20 -fmodules-ts -x c++-system-header iostream g++-13 -fmodules-ts -std=c++20 -x c++ shape.cppm...➜ g++-13 -fmodules-ts -std=c++20 -x c++ shape.cppm circle.cppm rectangle.cppm shape.cc shape:circle:...不过它们在使用的时候一些区别,例如:当子分区被引入时,使用其接口引发错误:internal compiler error: Segmentation fault: 11,而子模块是可以正常被引入使用。

15310

认识目标文件的符号

另外 C++ 还在语言级别支持名称空间,即允许在不同的名称空间多个同样名字的符号。...可以看到名称空间、类型、函数名、参数返回值的类型都被加入了修饰后的名称,这样编译器链接器就可以区别同名但不同参数类型名字空间的函数,而不会导致链接时候函数多重定义。...所以很明显,上面的代码C++的名称修饰机制将不会起作用。 由于 GCC 对 C 的变量函数没有修饰,对 C++ 的变量进行了修饰,下面看一个使用未经修饰的 C 的符号来访问C++的变量的例子。...幸好我们一种很好的方法可以解决上述问题,就是使用 C++ 的宏 “__cplusplus”,C++ 编译器会在编译 C++ 的程序时默认定义这个宏,我们可以使用条件宏来判断当前编译单元是不是 C++...一个改进的例子是: __attribute__ ((weakref)) void foo(); int main() { if(foo) foo(); } 这种弱符号弱引用对于库来说十分有用,比如库定义的弱符号可以被用户定义的强符号所覆盖

1.5K40

CC++inline用法详解

(一)inline函数(摘自C++ Primer的第三版) 在函数声明定义函数返回类型前加上关键字inline即把min()指定为内联。      ...Foo 则成为内联函数: void Foo(int x, int y); inline void Foo(int x, int y) // inline 与函数定义体放在一起 { } 所以说,inline...类的构造函数析构函数容易让人误解成使用内联更有效。要当心构造函数析构 函数可能会隐藏一些行为,如“偷偷地”执行了基类成员对象的构造函数析构函数。...C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。 在C程序,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函数。...C++ 语言的函数内联机制既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员。 所以在C++ 程序,应该用内联函数取代所有宏代码,"断言assert"恐怕是唯一的例外。

1.6K30

学习一下JavaScript

笔者也犯了这个大错误,JavaScript的构造函数并非如此,你可以将构造函数看成C++的类,这就要扯到C++JavaScript这两者在定义类上的本质区别了,我们可以参考这篇文章的?...那么我们该怎么表示实例与实例原型,也就是 person Person.prototype 之间的关系呢,这时候我们就要讲到第二个属性: 按照原作者的观点: 因为C++里面的是类声明函数声明本质区别...+差别了,可惜C++无法删除一个对象的数据成员,所以非常可惜,无法使用C++来演示一遍。...不过还是可以直观的感受到JavaScript的原型的是与C++的基类本质区别的。...在这点上C++JavaScript还是本质的区别的,C++可能会是第一种结果,可JavaScript却是第二种结果,相当于C++在直接看到了最后,然后前面同名的函数全部使用最后一种函数,这一点确实

34010
领券