• C++笔记 1



           
            
    1、%ldd 可行文件的名字;  ---可查看连接库
       
    2、C++严格区分大小写,变量命名只能使用字母,数字,或下划线,第一个字母必须使用字母或下划线
    3、float单精度,double双精度
           sizeof(int)---返回int在内存中占的大小
           size(bool)=1
           size(char)=1
           size(short)=2
           size(int)=4
           size(long)=4
           size(float)=4
           size(double)=8
            无符号的数据一旦溢出,将成为0。
            有符号的int最大值2147483647,益处变为最小值,负数
    4、不同数据间赋值:有兼容性的,占空间小的数据类型,可以给占空间大的数据类型赋值
                       不兼容的,可能会造成数据丢失。int ->float可以转换;float->int 小数部分丢失

    5、 运算符
        要求数据类型要相同
        i++ 先用后加
        ++i 先加后用
        布尔运算符号:结果真或假
        逻辑运算符:做bool运算!(1)“与”运算&&,两条件要同时成立(2)“或”运算||,只要有一个条件是真,就成立

    6、按位与“&”   有0则与的结果为0
       按位或“|”   有1则或的结果为1
       按位异或“^” 两位不同则为1,相同为0

    7、左移 “<<" 左移1相当于乘以2
       右移 “>>" 右移1相当于除以2
      
    8、三目运算符
       条件?真:假
      
    9、返回变量 --- 表达式可以再次赋值,赋值语句返回变量本身 eg:(a=10)=20
       返回变量的值 --- 不可再次赋值 eg:(a+5)=10
       左值:变量、赋值表达式,++i的返回值是左值
       右值:不能放在“=”左边的是右值,i++的返回值是右值
      
       常量要在声明时就赋值,并且不能修改
      
    10、流程控制
        while(条件){循环体} 条件成立,则进入循环,知道条件为假时,退出循环
          (1)声明循环变量
          (2)while()确定循环条件
          (3)循环变量要有所变化,避免形成死循环
        for(变量初始化;条件;变量的变化){循环体代码}
           开始时判断循环条件是否成立,循环结束后,到第三个条件,使用变量改变
        do{循环体}while(条件);
            先执行一次,再判断条件,选择是否继续执行循环

        break;  跳出循环,执行循环之外的下一条语句
        continue;  从此处开始,结束本次循环,进行下一次循环
       
    11、课堂练习---求1到100之间的所有素数

                       
    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项的费波拉切数列结果。

  • 相关阅读:
    使用MAT 分析内存泄漏实战
    测试面试题集锦----liunx与网络
    Python中request的post请求报requests.exceptions.SSLError:
    python 中requests的返回数可直接使用json
    unittest中的TestLoader使用
    3秒钟unittest入门使用
    postman做接口测试 application/x-www-form-urlencoded 格式与json格式互转
    python读取yaml文件,在unittest中使用
    python 传入任意多个参数(方法调用可传参或不传参)
    boost写的异步客户端样例代码修改为支持断开重连的代码
  • 原文地址:https://www.cnblogs.com/fickleness/p/3154460.html
Copyright © 2020-2023  润新知