• 常量, 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 只读 只读
  • 相关阅读:
    PHP中获取当前页面的URL信息
    $_POST和$GLOBALS['HTTP_RAW_POST_DATA'] 的区别
    curl模拟ip和来源进行网站采集的实现方法
    mysql修改root密码的几种方法
    微信小程序实现支付功能
    git获取远程服务器的指定分支
    mysql函数技巧整理
    sql 查询目标数据库中所有的表以其关键信息
    SET NOCOUNT ON
    C# CultureInfo中常用的InvariantCulture
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12285629.html
Copyright © 2020-2023  润新知