zoukankan      html  css  js  c++  java
  • **指针的指针,引用

    这是剑指offer表示数值的字符串

    class Solution {
    public:
        bool isNumeric(char* string)
        {
            if(string == NULL)
                return false;
            if(*string == '+' || *string == '-')
                string++;
            if(*string == '')
                return false;
            ScanDigit(&string);
            bool num = true;
            if(*string != ''){
                if(*string == '.'){
                    string++;
                    ScanDigit(&string);
                    if(*string == 'e' || *string == 'E'){
                        num = Isexponential(&string);
                    }
                }
                else if(*string == 'e' || *string == 'E')
                    num = Isexponential(&string);
                else
                    num = false;
            }
            return num && (*string == '');
        }
        void ScanDigit(char **string){
            while(**string >= '0' && **string <= '9' && **string != '')
                (*string)++;
        }
        bool Isexponential(char **string){
            if(**string != 'e' && **string != 'E')
                return false;
            (*string)++;
            if(**string == '+' || **string == '-')
                (*string)++;
            if(**string == '')
                return false;
            ScanDigit(string);
            return (true && (**string == ''));
        }
    };

    为什么后面那两个函数要用指针的指针?而不是指针就行了?

    如果只传一个*,函数结束后,string的指针的值并不会发生变化,依旧是传进去之前那个值。因为传*,相当于copy一个值给他,而并不会改变原来的值,只有传给他地址,才能真正改变原来的值。这个和平时用的int、float的引用是一样的。

    引用的写法:

    1.int a = 5;

       int &b = a;

       改变b,a也会改变

       如果你直接int b = a,改变b不会改变a

       int &b = a是b也指向a的位置,int b = a,b要单独开个空间,所以b变化不会影响a,相当于copy给b

       深copy就是int b = a,因为两个开辟了两个空间,浅拷贝就是int &b = a,因为两个共享一个空间

       这里的函数如果写成*,就相当于把string这个指针的值copy给函数,也就是深拷贝

    2.int c = 5;

       void find_depth(int &depth){};

     find_depth(c);

  • 相关阅读:
    Jqgrid学习
    【转】SpringMVC 流程图
    【转】spring学习之@SessionAttributes
    【转】HttpSessionListener, HttpSessionAttributeListener的用法
    Java会话(session)管理
    hibernate--一对多xxx.hbm.xm配置
    使用Spring容器
    最简单的hibernate入门、配置
    搭建Struts 2的工作环境
    Struts2的常用标签
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9118424.html
Copyright © 2011-2022 走看看