zoukankan      html  css  js  c++  java
  • 常量, char[], const char[], char*, const char*, char* const以及const char* const的详解

    注意,这里用char类型只是举了一个例子,其他的int之类的也通用。

    1: 常量:

    例子:

    char str[] = "Hello world!";
    char ch = 'a';
    int i = 12345;

    我们看等号右边的,这些就叫常量。常量在程序运行过程中不会发生改变,并且随着程序一起装入内存。

    2: char[]:

    例子:

    char str[] = "Hello world";

    str是一个字符型数组(字符串)变量。可读可写。

    3: const char[]:

    例子:

    const char str[] = "Hello world!";

    str是一个只读字符串。它的内存单元中的值不可以被改变,只能在变量分配内存的时候被初始化进去。如果这样写就是非法的:

    const char str[] = "Hello world!";
    str = "ypa!";//Error Example

    4: char*:

    例子:

    char str[] = "Hello world";
    char *lpstr = str;

     lpstr是一个指向字符数组(字符串)变量的指针变量。lpstr的值可读可写,也就是在不同时间它可以指向不同的的内存单元;同时,它所指向的内存单元str也可读可写。

    5: const char*:

    例子:

    const char str[] = "Hello world!";
    const char *lpstr = str;
    //这样写也一样:
    //char const str[] = "Hello world!";
    //char const *lpstr = str;

    lpstr是一个指向只读字符串的指针变量。lpstr的值可读可写,也就是在不同时间它可以指向不同的的内存单元;但是,它所指向的内存单元str只读不可写。如果这样写就是非法的:

    const char str[] = "Hello world!";
    const char *lpstr = str;
    *lpstr = 'y';//Error Example

    6: char* const:

    例子:

    char str[] = "Hello world!";
    char* const lpstr = str;

    lpstr是一个指向字符数组(字符串)变量的只读指针量。lpstr的值只读不可写,也就是它被初始化了时候就不能再指向其他变量了;但是,它所指向的内存单元str是可读可写的。如果这样写就是非法的:

    char str1[] = "Hello world!";
    char str2[] = "ypa!";
    char* const lpstr = str1;
    lpstr = str2;//Error Example

    7: const char* const:

    例子:

    const char str[] = "Hello world!";
    const char* const lpstr = str;

    lpstr是一个指向只读字符串的只读指针量。lpstr的值只读不可写,也就是它被初始化了时候就不能再指向其他变量了;并且它所指向的内存单元str也是只读不可写的。如果这样写就是非法的:

    const char str1[] = "Hello world!";
    const char str2[] = "ypa!";
    const char* const lpstr = str1;
    *lpstr = 'y';//Error Expmple
    lpstr = str2;//Error Example

    总结:

    类型 自己内存单元的属性 所指向的内存单元的属性
    char[] 读/写
    const char[] 只读
    char* 读/写 读/写
    const char* 读/写 只读
    char* const 只读 读/写
    const char* const 只读 只读
  • 相关阅读:
    tips 前端 阻止 浏览器缓存静态资源
    tips 前端 各个设备的页面尺寸的media query 与页面高度的经验总结
    算法-第四版-练习1.3.28解答
    事件循环(event loop) && 任务队列 (task queue) && $nextTick
    element -ui之<el-table>
    node.js(三 --- stream 管道流 模块化 函数)
    node.js(二 --- events 、buffer、)
    ajax请求的所有状态码详解
    element-ui中el-tree的父元素设置好宽度后不能被子内容撑开的问题
    java获取前端请求字段的方法
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12285629.html
Copyright © 2011-2022 走看看