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 只读 只读
  • 相关阅读:
    并发编程
    进程的介绍
    操作系统详解
    进程的粗略理解
    打印进度条
    FTP上传下载文件(面向对象版)
    socket套接字
    FTP上传下载文件(函数简易版)
    osi七层协议 Open System Interconnection
    __str__和__repr__的区别
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12285629.html
Copyright © 2011-2022 走看看