const char and static const char

时间:2021-10-17 23:09:53

部分内容摘自:https://blog.csdn.net/ranhui_xia/article/details/32696669

The version with const char * will copy data from a read-only location to a variable on the stack.

The version with static const char * references the data in the read-only location (no copy is performed).

在函数内部,const char *每次调用函数时,都需要在stack上分配内存,然后将数据拷贝过来,函数退出前释放。

而static const char *,会直接访问read only的数据,无需再stack上分配内存。

char * const cp     : 定义一个指向字符的指针常数,即const指针

const char* p       : 定义一个指向字符常数的指针

char const* p       : 等同于const char* p

举个例子:

 #include <iostream>
#include <cstdio>
using namespace std; int main()
{
char ch[] = {'a','b','c'};
char* const cp = ch;
printf("char* const cp: \n %c\n", *cp);
/*
** cp point to a fixed address
**
cp++; //error: increment of read-only variable ‘cp’
printf("char* const cp: \n %c\n", *cp);
**
*/ const char ca = 'a';
const char* p1 = &ca; /*
** 2. Only const char* pointer can point to a const char
**
const char cb = 'b';
char* p2 = &cb; //error: invalid conversion from ‘const char*’ to ‘char*’
**
**/ /*
** 3. p1 points to a const char, the char be pointed has to be const,
** p1 can point to a different const char
*/
printf("const char* p1: \n %c\n", *p1);
const char cb = 'b';
p1 = &cb;
printf(" %c\n", *p1);
return ;
} /*
** Output:
char* const cp:
a
const char* p1:
a
b
**
*/

const char and static const char的更多相关文章

  1. static&comma; const 和 static const 变量的初始化问题

    const 常量的在超出其作用域的时候会被释放,但是 static 静态变量在其作用域之外并没有释放,只是不能访问. static 修饰的是静态变量,静态函数.对于类来说,静态成员和静态函数是属于整个 ...

  2. iOS—— static和const联合使用;使用static const 与 &num;define

    static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ...

  3. Static Const

    Static 内部的 Const 不可变的 一般写法 在.m文件中, static NSString *const ID = @"shop"; static const CGFlo ...

  4. 遇到一个很古怪的问题,C&plus;&plus;类static const成员的初始化

    在我的文件里有这class NFDuration, NFDuration.h里是这样的: // A Duration represents the elapsed time between two i ...

  5. iOS-static和const联合使用;使用static const 与 &num;define

    static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ...

  6. C&plus;&plus;中类中常规变量、const、static、static const&lpar;const static&rpar;成员变量的声明和初始化

    C++类有几种类型的数据成员:普通类型.常量(const).静态(static).静态常量(static const).这里分别探讨以下他们在C++11之前和之后的初始化方式. c++11之前版本的初 ...

  7. 对 static const char&ast; const str&lbrack;&rsqb; &equals; &lbrace;&OpenCurlyDoubleQuote;string”&rcub; 的理解

    static const char* const str[] = {“string”} 静态常量型指针变量 static const char* 常量型变量 const str[] 这样修饰的作用为 ...

  8. C语言中为什么不能把char&ast;&ast;赋给const char&ast;&ast;

    这是我在知乎回答的一个问题. 这个问题是C中的一个深坑,首先说结论: char ** 和 const char ** 是两个不相容(incompatible)的类型,能够理解为不能直接赋值 在C11的 ...

  9. &lbrack;Link 2005&rsqb;vs2015 LNK2005&Tab;&quot&semi;class std&colon;&colon;basic&lowbar;ostream&lt&semi;char&comma;struct std&colon;&colon;char&lowbar;traits&lt&semi;char&gt&semi; &gt&semi; &amp&semi; &lowbar;&lowbar;cdecl printR&lpar;class std&colon;&colon;basic&lowbar;ostream&lt&semi;char&comma;struct std&colon;&colon;char&lowbar;traits&lt&semi;char&gt&semi; &gt&semi; &amp&semi;&comma;class QueryResult const &amp&semi;&rpar;&quot&semi; &lpar;&quest;

      vs2015 LNK2005 "class std::basic_ostream<char,struct std::char_traits<char> > &am ...

随机推荐

  1. Linq-分组统计

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  2. linux 匹配字符串是否为数字

    #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...

  3. Popmotion – 小巧,灵活的 JavaScript 运动引擎

    Popmotion 是一个只有12KB的 JavaScript 运动引擎,可以用来实现动画,物理效果和输入跟踪.原生的DOM支持:CSS,SVG,SVG路径和DOM属性的支持,开箱即用.Popmoti ...

  4. Windows cmd 颜色,字体,color font set up

    windows的cmds默认的字体很丑,丑的不认直视,『如花』一般. 但是总有用到的时候 这是我有优化的一种结果,怎么来弄呢 要字体颜色漂亮,先要在注册表的Console中注册你要使用的字体,这个至关 ...

  5. 转:12种JavaScript MVC框架之比较

    Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月的时间研究和比较了12种流行的JavaScript MVC框架,并在博客中总结了每种框架的优缺点,最终的结果是,Ember. ...

  6. 免信用卡注册美国App Store账号

    对于一些应用国内的App Store无法下载让人很郁闷,而自己又有点轻微的强迫症.于是开始尝试免信用卡注册iCloud账号. Apple的官方网站上的教程,见http://support.apple. ...

  7. Javascript中的onclick事件

    示例: <script type="text/javascript"> function onSubmit() { alert("保存数据"); } ...

  8. 兼容ie6&sol;ff&sol;ch&sol;op的div&plus;css实现的圆角框

    <!DOCTYPE html> <html> <head> <title>青春不迷茫:寻梦时代的“蚁族”逆袭之旅- 职场管理专题-中国人力资源开发网-中 ...

  9. ABP 多租户 对应多数据库 租户启动报错

    什么是多租户? “软件多租户是指一个软件体系结构,其中一个软件实例在一个服务器上运行,并为多个租户提供服务*租户是一组共享具有软件实例特定权限的公共访问权限的用户. 架构中,软件应用程序旨在为每个租户 ...

  10. 开源MSSQL Express Profile 文件

    https://files.cnblogs.com/files/mqingqing123/ExpressProfile.rar