博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
**指针的指针,引用
阅读量:6543 次
发布时间:2019-06-24

本文共 1636 字,大约阅读时间需要 5 分钟。

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

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

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

如果只传一个*,函数结束后,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);

转载地址:http://dpodo.baihongyu.com/

你可能感兴趣的文章
GUID-1
查看>>
跨域共享Cookie ,单点登录,二级域名登录共享
查看>>
FusionCharts的使用方法
查看>>
从文件或摄像机读
查看>>
批量修改Project视图中Prefab的名字
查看>>
requestAnimationFrame,Web中写动画的另一种选择
查看>>
js实现按回车自行提交
查看>>
ASP.NET Web API标准的“管道式”设计
查看>>
php curl常见错误:SSL错误、bool(false)
查看>>
jenkins 忘记admin用户账号密码
查看>>
N++ 道ASP.NET面试题
查看>>
在 Java 中使用启发式搜索更快地解决问题
查看>>
转:windows下多线程通信方法
查看>>
C# 实现将 PDF 转文本的功能
查看>>
android导航设计
查看>>
spm中头动绘图的理解,自带数据集
查看>>
Java的深度克隆和浅度克隆
查看>>
Nodejs学习笔记(二)--- 事件模块
查看>>
HDUOJ------2398Savings Account
查看>>
script标签块的独立性与共享性
查看>>