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 只读 只读
  • 相关阅读:
    BZOJ2286 [Sdoi2011]消耗战 【虚树 + 树形Dp】
    BZOJ1305 [CQOI2009]dance跳舞 【网络流】
    BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】
    BZOJ1103 [POI2007]大都市meg 【树剖】
    BZOJ1927 [Sdoi2010]星际竞速 【费用流】
    POJ3450 Corporate Identity 【后缀数组】
    POJ3623 Best Cow Line, Gold 【后缀数组】
    POJ3415 Common Substrings 【后缀数组 + 单调栈】
    关于线上bug
    关于线上bug
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12285629.html
Copyright © 2011-2022 走看看