首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Const char ...改变了吗?

是的,const char * 改变了。在 C++11 及以后的版本中,const char * 被重命名为 const char[],而在 C++17 中,它又被进一步重命名为 constexpr char[]。这种变化的原因是为了提高代码的可读性和可维护性,以及解决 const char * 在某些编译器中可能出现的类型推导问题。

在 C++11 之前,const char * 指向的是一个字符指针,它指向一个字符常量。在 C++11 中,为了提高代码的可读性和可维护性,const char * 被重命名为 const char[],这意味着它现在是一个指向字符常量的指针,而不是指向一个字符指针。在 C++17 中,为了进一步提高代码的可读性和可维护性,const char[] 被进一步重命名为 constexpr char[]

总的来说,这种变化意味着 const char * 已经被 constexpr char[] 取代,const char * 已经被视为过时,应该尽量避免使用。

constexpr char[] 的优点是它提高了代码的可读性和可维护性,同时也可以避免一些编译器在类型推导时可能出现的问题。它也可以用于在编译时生成字符串常量,这对于生成随机字符串等非常有用。

总的来说,const char[] 的出现大大提高了代码的可读性和可维护性,同时也提供了一些新的功能,这使得它成为现代 C++ 编程中不可或缺的一部分。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Visual Studio中C++关于Unicode字符集和多字节字符集

    原本标准字符集为8位的ASCII码,但世界上的书写语言不能简单地用256个8位代码即一字节表示,就试更宽的值,例如16位值。这就是Unicode非常简单的原理。与混乱的256字符代码映射,以及含有一些单字节代码和一些双字节代码的双字节字符集不同,Unicode是统一的16位系统,这样就允许表示65536个字符。在这里会高兴地告诉你前128个Unicode字符(16位代码从0x0000到0x007F)是ASCII码,而接下来的128个Unicode字符(代码从0X0080到0X00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字符都同样基于现有的标准。 Unicode对表示所有字符及世界上使用象形文字的语言,包括一些列的数字、符号和货比的集合来说用16位来表示是充裕的,因此Unicode包含了世界上所有的字母、符号、数字以及中文等在内的字符。

    03

    内存分配——静态存储区 栈 堆 与static变量

    可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

    03
    领券