原创笔记,转载请注明出处!

点击【关注】,关注也是一种美德~


C++中所有的变量和函数都必须有类型;

C语言中的默认类型在C++中是不合法的!

在C语言里面可以写一些很奇怪的函数!并且可以运行成功!

f(i)函数的返回值是什么类型?参数又是什么类型?我们赋值10居然可以打印出来!

g()函数可以接受多少个参数?我们没有参数,但是函数调用时我们可以加上参数,并且运行成功!

f(i)

{

printf("i=%d\n",i);

}

g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g(1,2,3,4,5));

return 0;

}

运行结果:

i = 10

g() = 5

Press any key to continu

所以说这就是C语言不好的地方,这个不好的地方C++对其进行了摒弃!

同样的代码我们放到C++中来看一下!

#include<iostream>

using namespace std;

f(i)

{

printf("i=%d\n",i);

}

g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g(1,2,3,4,5));

system("pause");

return 0;

}

发现编译报错。

在C++中,不管是函数返回值类型还是变量类型,还是函数参数数量,我们都不能马虎,C++编译器都可以一一找出错误!下面的程序编译才可以通过!

#include<iostream>

using namespace std;

int f(int i)

{

printf("i=%d\n",i);

return 0;

}

int g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g());

system("pause");

return 0;

}

因此C++对变量和函数的类型检查更加严格!

小结:

在C语言中

int f() 表示返回值为int类型,接受任意参数的函数;

int f(void) 表示返回值为int类型的无参函数。

在C++

int f()和int f(void)具有相同的意义,都表示返回值为int类型的无参函数。

C++更加强调类型,任意的程序元素都必须指明类型。


原创笔记,转载请注明出处!

更多精彩请关注微信公众号:依法编程


C++笔记013:C++对C的扩展——C++中所有变量和函数都必须有类型的更多相关文章

  1. R语言学习笔记(十七):data.table包中melt与dcast函数的使用

    melt函数可以将宽数据转化为长数据 dcast函数可以将长数据转化为宽数据 > DT = fread("melt_default.csv") > DT family_ ...

  2. 关于Javascript中声明变量、函数的笔记

    一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1, ...

  3. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. ES6学习笔记(六)数组的扩展

    1.扩展运算符 1.1含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) // ...

  5. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  6. 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用

    目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://gi ...

  8. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  9. 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)

    扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...

随机推荐

  1. CentOS6.5(1)----设置静态IP并禁用IPV6

    使用vim命令编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ...

  2. latex 图形的放置

         Next: 16.3 清除未处理的浮动图形 Up: 16. 浮动图形环境 Previous: 16.1 创建浮动图形  16.2 图形的放置 图形(figure)环境有一个可选参数项允许用户 ...

  3. MAVLink Onboard Integration Tutorial

    MAVLink Onboard Integration Tutorial MAVLink is a header-only library, which means that you don't ha ...

  4. 【转】PHP如何快速读取大文件

    在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...

  5. [转]实现Hive数据同步更新的shell脚本

    引言: 上一篇文章<Sqoop1.4.4 实现将 Oracle10g 中的增量数据导入 Hive0.13.1 ,并更新Hive中的主表>http://www.linuxidc.com/Li ...

  6. MySQL经典错误

    本文目录: Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)Top 2:(主从复制报错类型)Top 3:MySQL安装过程中的报错Top 4:数 ...

  7. hibernate对象的三种状态及转换

    一.hibernate对象三种状态 Transient(瞬时状态):没有session管理,同时数据库没有对应记录 举例:new 出来的对象还没有被session管理,此时该对象处于Transient ...

  8. Linux下postgres安装fuzzystrmatch其他拓展包

    (1)安装gdal # wget http://download.osgeo.org/gdal/2.0.0/gdal-2.0.0.tar.gz # tar zxvf gdal-2.0.0.tar.gz ...

  9. 【Leetcode】【Easy】Contains Duplicate

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  10. 【Try Kotlin】Kotlin Koans 代码笔记

    Kotlin Koans 心印 Introduction 1.Hello, world! Simple Functions Take a look at function syntax and mak ...