zoukankan      html  css  js  c++  java
  • C++day03 学习笔记

    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、需求分析、设计、代码实现

    View Code
        =========================================
                     chang.h
        =========================================
        char change( char );
    View Code
        =========================================
                   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 ;
            }
        }
    View Code
        =========================================
                   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项的费波拉切数列结果。

  • 相关阅读:
    Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传
    对ExtJS4应用 性能优化的几点建议
    Extjs4中用combox做下拉带图片的下拉框
    当你的才华还撑不起你的野心时,就应该静下心来学习(转)
    占位符行为 PlaceHolderBehavior 的实现以及使用
    一个简单的TabItem样式。
    WPF实现Twitter按钮效果(转)
    模仿36。杀毒~button(转)
    WPF自适应可关闭的TabControl 类似浏览器的标签页(转)
    WPF绘制简单常用的Path(转)
  • 原文地址:https://www.cnblogs.com/tangzhengyue/p/2622445.html
Copyright © 2011-2022 走看看