zoukankan      html  css  js  c++  java
  • string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?

    A:

    区别主要是:
    string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
    char *的内存管理由用户自己处理,很容易出现内存不足的问题。

    当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。
    当你知道了存储的内存的时候,可以用char *,但是不如用string的好,用指针总会有
    隐患。

    用string还可以使用各种成员函数来处理串的每一个字符,方便处理。
    用char *处理串,就不如string的方便了,没有相应的函数来直接调用,而是要自己编
    写函数来完成串的处理,而且处理过程中用指针还很容易出现内存问题。

    我建议尽量使用string,不用char*;
    尽量使用vector(关联数组),不用数组;
    尽量使用迭代器,而不用指针。

    B:

    string这个是STL里的一个容器,操作字符串非常方便;
    char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了。
    C++的话,感觉用string比较合适,当然如果数据比较简单的话用char *也可以的

    但是使用string的时候一定要注意构造和拷贝以及析构带来的性能开销,尽可能的减少构造,能使用引用的地方尽量用引用,减少不必要的构造

    C:

    区别主要是:
    string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
    char *的内存管理由用户自己处理,很容易出现内存不足的问题。

    当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。
    当你知道了存储的内存的时候,可以用char *,但是不如用string的好,用指针总会有
    隐患。

    用string还可以使用各种成……

    D:

    string代替char*也好,vector代替数组也好,都不是必须要这样的
    实际上用stl的东西还是要谨慎些,很多东西必须要注意而不是简单替换
    如果对stl一知半解,就简单用vector代替数组,string代替char*,你会发现你的程序慢的跟牛一样。。。

    E:

    STL是标准库,内部对各种容器和相应的函数进行了封装。
    优点是已经封装好,可以直接使用,且不用进行内存管理,其内部自己实现内存的申请与释放。不易出错。
    缺点是其内部申请的内存要大于你要使用的内存,原因是便于数据的动态扩展,并且不同容器对内存的管理策略也不尽相同。完成同样的一个任务可能会有多种方式,在不了解内部实现的情况下,不一定能够使用最有效率的方法完成任务。
    所以,在已知大小的情况下使用char*或charp[]比较好,在效率和内存使用上。
    在未知长度,并且总体上并不会占用很多内存,对效率要求不高,或者没有限制内存与效率的情况下使用string。

  • 相关阅读:
    【css】rem及其替换方案
    【css】如何实现环形进度条
    【js】我们需要无限滚动列表吗?
    【js】再谈移动端的模态框实现
    【js】callback时代的变更
    【js】为什么要使用react+redux
    【js】JavaScript parser实现浅析
    【css】回想下经典的布局
    【JS】温故知新: 从parseInt开始
    【渲染原理】浏览器渲染原理的个人整理
  • 原文地址:https://www.cnblogs.com/GODYCA/p/2851923.html
Copyright © 2011-2022 走看看