C++笔记013:C++对C的扩展——C++中所有变量和函数都必须有类型
原创笔记,转载请注明出处!
点击【关注】,关注也是一种美德~
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++中所有变量和函数都必须有类型的更多相关文章
- R语言学习笔记(十七):data.table包中melt与dcast函数的使用
melt函数可以将宽数据转化为长数据 dcast函数可以将长数据转化为宽数据 > DT = fread("melt_default.csv") > DT family_ ...
- 关于Javascript中声明变量、函数的笔记
一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1, ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- ES6学习笔记(六)数组的扩展
1.扩展运算符 1.1含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) // ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
- 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用
目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://gi ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)
扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...
随机推荐
- IOS xcode安装
xcode软件下载地址: 可以通过虚拟机共享文件夹将xcode传递给虚拟机上的os系统: 第一个程序创建:
- 【眼见为实】自己动手实践理解数据库READ COMMITTED && MVCC
[READ COMMITTED] 首先设置数据库隔离级别为读已提交(READ COMMITTED): set global transaction isolation level READ COMMI ...
- Week2——提交表单后后台的工作
在我理解看来,发生请求后主要是通过域进行相互间的协调作用的.表单数据可以从request域中获得,也可以通过response域返回数据给前台. 当发起http请求后,已经启动的Tomcat服务器解析收 ...
- 【 PostgreSQL】十条实用数据库SQL优化建议
基于PostgreSQL,总结几条常用的查询操作的优化建议,部分也适用于Oracle等数据库. 1.选择合适的分布键 分布键选择不当会导致重分布.数据分布不均等,而数据分布不均会使SQL集中在一个se ...
- Radix Sorts
基数排序 Strings In Java Char Data Type C 语言中的字符数据类型占一个字节(8 比特),最多只能表示 256 个字符.支持 7 位的标准 ASCII(American ...
- IOS 缓存思路
为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存) 第一次请求数据时内存缓存中没有数据硬盘缓存中没有数据 当服务器返回数据时,需要做以下步骤 使用服务器的数据(比如解析.显示) 将服务器的 ...
- [转]solr系统query检索词特殊字符的处理
原文地址:http://blog.csdn.net/wgw335363240/article/details/39889979 solr是基于 lucence开发的应用,如果query中带有非法字符串 ...
- XtraBackup出现 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
解决办法1.建立一个软连接 ln -s /dat/data/mysql/mysql.sock /var/run/mysqld/mysqld.sock 解决办法2:指定--host=127.0.0.1
- css3优惠券
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...
- 大屏FAQ
1. 大屏可以分为哪几类?帆软有哪些大屏硬件合作商?编辑 拼接屏:通常由单个46-55寸的液晶显示屏组成屏幕墙,存在拼缝,借助矩阵.屏控系统来进行信号的输入与输出控制,可以实现屏幕墙上多个屏幕的组合. ...