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为参数,类似于这 ...
随机推荐
- 编辑文本(EditText)
今天要给大家介绍的是简单的编辑文本框: 先看一下它的基本属性: 1.Activity public class EditTextActivity extends Activity { private ...
- Android 简单图片浏览器 读取sdcard图片+形成缩略图+Gallery
1.读取SD卡上面的图片信息 //想要的返回值所在的列 String[] projection = { MediaStore.Images.Thumbnails._ID}; //图片信息存储在 and ...
- robbe-1.2发布-支持最新版本的friso+WinNT下php各版本的dll
robbe是建立在friso中文分词组建上的一个高性能php中文分词扩展.(只支持UTF-8编码) robbe-1.2: 1. friso近几天发布1.3了, 接口有些许变化, 更改robbe适合最新 ...
- 【转】pscp实现远程文件(夹)传输
原文地址:http://blog.163.com/yang_jianli/blog/static/16199000620128251383197/ pscp与linux下的scp命令相似,功能相同,在 ...
- *.vue文件的template标签内使用form标签
由于form表单有重复提交的问题,所以在vue文件内直接使用form标签时需要注意这个问题,否则会导致页面重复刷新跳转不成功的问题 解决方案: <form @submit.prevent> ...
- HTML5离线存储之webstorage
html5在引入webStorage之前,主要用cookies. html5的webstorage 分两种:LocalStorage 和SessionStorage,两者的差别主要在生命周期不同. 1 ...
- 使用dsoframer控件出现"Unable to display the inactive document. Click here to reactivate the document."的问题 .
使用如下属性设置: axFramerControl.ActivationPolicy = DSOFramer.dsoActivationPolicy.dsoKeepUIActiveOnAppDeact ...
- Kendo UI 的 k-template
官网上的例子: 1. <span id="output"></span><script>var template = kendo.templat ...
- Nowcoder Girl 初赛 T5
Nowcoder Girl 初赛第五题 来源 Nowcoder Girl 初赛第五题 题面 \(n(1<=n<=10000)\)件武器,每件武器对于属性有加成,一共五种属性.若使用其中的\ ...
- yum安装工具的理解
在安装gtk+编译环境的过程中,你会发现,RPM软件包之间的依赖关系非常复杂.在实际管理过程中,这种依赖关系可能会更加复杂.因此非常有必要寻找一种自动化安装工具,让安装工具自己处理这些关系复杂的依赖关 ...