#include <stdio.h>
int MyFunction(int n); /* Prototype or declaration */
int main( void ) /* Calling function */{
printf("%d\n", MyFunction(6)); /* Error: forgot argument to MyFunction */
return 0;
}
int MyFunction( int n ) /* Called function definition */{
if (n == 0){
return 1;
}
else{
return n * MyFunction(n - 1);
}
}
强制转型(coercion of argument)提到在C++中类型众多short, int , float, double, unsigned int, 下往上转当然没问题只是多花记忆体空间但上往下转比如: double转成int或转成unsigned int就可能造成资料丢失问题。
一般说我们说bool类型的值非True即Flase,int类型的值介於-2,147,483,648 至 2,147,483,647,但我们也可以使用enum自行定义类型例如月份: enum Months { JAN=1, FEB, MAR, APR, MAY, JUN, AUG, SEP, OCT, NOV, DEC};
三个储存关键字auto, register, static,函式中的变数预设是auto当函式存在时存在,函式结束时根据最小授权原则principle of privilege会自动收回记忆体空间,以现今的语言来说C++已经是运行时最快的但在一些追求极致速度的系统中例如:交易系统C++还有一个关键字register可将变数存放於CPU的暂存器(register)不仅增加读取速度更节省变数在register与memory间的反覆传输,运算速度整个Level Up,当然CPU的暂存器是弥足珍贵的所以这是一种建议性质关键字当CPU的暂存器空间不足还是会被丢回memory。
预设情况下当函数生命周期结束变数也会跟着一起被回收,如果想要变数生存在整个程序执行的期间就可以使用全域变数(Global var),然全域变数是所有函数都可以读取,全域变数满天飞常常是造成问题的根源,比较好的方式对区域变数使用static关键字进行最小授权。值得注意的是static用在全域变数或函式名称时有不同用意。
有句话说「递回(recurse)只应天上有,凡人该当用回圈(iterate)」,确实比起回圈递回的使用更加困难,但也有些好处
反正像我这种凡人只有在研究所考试时写河内塔, 求最大公因数等经典题目,工作後就很少遇到了就不多做介绍。
<<: 【Day 7】Google Apps Script - 使用 Google Docs 撰写 Demo 用的 API 文件
>>: 找LeetCode上简单的题目来撑过30天啦(DAY7)
开始在今日的学习前,让我们先来笔记一下此章节的学习重点吧! MusesAI小精灵带您了解影像辨识的流...
使用Emmet省下泡一杯咖啡的时间 (HTML篇) 效率满点的好工具 为什麽而学? 前身是Zen c...
上一篇讲完如何处理已经得到的资讯数据,今天来看看我们是如何与Web 服务器进行通信的 首先添加依赖:...
影片Vue01 1.Vue (Part_1 > Lab_HelloVueJS > hel...
任务(Task)是 Gradle 运行时的基本单位,基本上所有我们输入的 Gradle 指令都是对应...