您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记 day03

2014-08-20 10:47 162 查看
1、cin 输入流一旦破坏,就不能恢复

2、函数:一段相关代码组成的集合,以便完成一个特定的目的。

(1)可以通过名字来使用,曾强了代码的可重用性。

(2)提高可维护性。

3、函数定义=声明+函数体:

<返回类型> 函数名(<参数表>...){

return ...

}

函数返回值:只有在调用函数的同时才能保存返回值

函数定义时,小括号里的参数称为形参,在函数被调用的时候才有意义。

函数调用时,小括号里的被传入的参数称为实参。

4、函数在调用之前只有声明就可以,因为在编译阶段,参照声明可以完成语法上的检测。

函数声明 <返回类型> 函数名(<参数表>...);

声明与定义的分离,实现并行开发!

5、全局变量,局部变量

局部变量:函数内部声明的变量,只能在它声明的函数内部使用。如果没有对其初始化就使用,则其值为垃圾数字。

全局变量:能被所有的函数共同使用,要声明在所有函数(包括main函数)之外。尽量少使用,影响太大。如果没有对其初始化就使用,系统默认为其初始化为0。

6、数据区:只存放全局数据,数据区的数据是稳定的,程序启动时,即创建,程序结束时,才消失

堆区

代码区

栈区:存储局部变量。插入数据从栈顶插入,先进后出结构。

如果函数不调用的话,局部变量是不存在的

在main函数与其他函数之间有个标记,一旦函数返回,栈顶下落到标记处

栈中的数据是变化频繁的

函数调用时创建,函数返回即消失

7、 值传递

函数调用并不是传递实参本身,而是创建一个临时变量传到函数中

(1)为形参创建一个临时变量,临时变量的值是拷贝实参的值

(2)对形参的使用,实际上是对临时变量的使用,不会改变实参的大小

8、默认参数

(1)area(float a , float b =10); 当只传递一个参数时,形参b的位置默认为10

(2)有默认值的形参靠右摆放

9、内联函数

声明时加“inline”,运行效率高,不支持结构控制语句,必须先定义,不支持函数原形。

10、递归函数

在函数内部自己调用自己。

必须有明确的返回条件----递归的出口

11、函数重载

(1)函数名相同。

(2)参数表不同(参数个数不同,参数类型不同,参数顺序不同)。

(3)与参数名和返回类型不关

调用时会根据参数表匹配自动调用相应的函数

编译之后,函数的名字都会发生改变,后面会加上形参缩写作为后缀,没有任何函数的名字是一样的

不会做自动类型提升

对重载的函数最好不使用参数默认值

12、const

在函数内部不允许修改此形参

13、需求分析、设计、代码实现

=========================================

chang.h

=========================================

char change( char );

=========================================

chang_impl.cc

=========================================

char change( char c ){

if( c >= 97 && c <= 122 ){

return c - 32 ;

}else if( c >= 65 && c <= 90 ){

return c + 32 ;

}else{

return c ;

}

}

=========================================

main.cc

=========================================

#include <iostream>

#include "change.h"

using namespace std;

int main(){

char c = '0' ;

while( 1 ){

cout<<"enter a char[ 0 exit] >";

cin>>c ;

if( c == '0' ){

break;

}

cout<<" ====>" << change( c ) <<endl;

}

return 0 ;

}

14、外部变量和内部变量

外部变量:extern int g; ----声明外部变量,引入一个变量,在别的源程序中声明

内部变量:在源文件中声明的变量

外部变量肯定是一个全局变量!

作用域 生命周期 存储位置

全局变量(外部变量) 所有函数 程序启动->程序结束 数据区 Data

局部变量 函数内部 函数开始调用->函数返回 栈 Stack

静态局部 函数中 第一次调用函数时(只被初始化一次)->程序结束 数据区 ---只需要一份数据,并且不希望别的函数访问他

静态全局 本源文件中 程序开始->程序结束 数据区

作业:实现银行业务 ========= a.cc ==================

long id;

int password;

double balance;

long(id) create(balance , password); //创建账户

void save( sum );

int(staus 0,-1) withdraw(sum , password);

float query();

===================================

generatorId(); //得到唯一的ID号

int showMenu(); //现实主菜单

saveMenu(); //收集开户信息,然后调用创建账户

createMenu();

withdrawMenu();

queryMenu();

===================================

***今日重点:(1)形参和实参的区别

(2)递归

(3)函数重载

练习: 观察费波拉切数列1,1,2,3,5,8,13,21,34. . . . . .第一项和第二项都是1,后面的每一项是前面相邻两项的和。

使用递归方法计算第n项的费波拉切数列结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: