zoukankan      html  css  js  c++  java
  • [c++基础] const char and static const char

    部分内容摘自: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

    举个例子:

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     char ch[3] = {'a','b','c'};
     8     char* const cp = ch;
     9     printf("char* const cp: 
     %c
    ", *cp);
    10     /* 
    11     ** cp point to a fixed address
    12     **
    13     cp++;  //error: increment of read-only variable ‘cp’
    14     printf("char* const cp: 
     %c
    ", *cp);
    15     **
    16     */
    17 
    18     const char ca = 'a';
    19     const char* p1 = &ca;
    20 
    21     /* 
    22     ** 2. Only const char* pointer can point to a const char
    23     **
    24     const char cb = 'b';
    25     char* p2 = &cb; //error: invalid conversion from ‘const char*’ to ‘char*’
    26     **
    27     **/
    28 
    29     /*
    30     ** 3. p1 points to a const char, the char be pointed has to be const, 
    31     **    p1 can point to a different const char
    32     */ 
    33     printf("const char* p1: 
     %c
    ", *p1);
    34     const char cb = 'b';
    35     p1 = &cb;
    36     printf(" %c
    ", *p1);
    37     return 0;
    38 }
    39 
    40 /*
    41 ** Output:
    42 char* const cp: 
    43  a
    44 const char* p1: 
    45  a
    46  b
    47 **
    48 */

  • 相关阅读:
    怎么把分页按钮(首页,尾页等)放在表格右下角处?(已解决)
    zabbix单位符号
    容器、可迭代对象、迭代器、生成器之间的关系.
    Zabbix housekeeper processes more than 75% busy
    zabbix 告警信息模板
    zabbix 历史数据和趋势数据
    socket沾包问题
    面向对象--进阶
    面向对象
    列表 元组 字典
  • 原文地址:https://www.cnblogs.com/shiyublog/p/9757038.html
Copyright © 2011-2022 走看看