zoukankan      html  css  js  c++  java
  • c语言 const 关键字和指针结合

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        //printf("Hello world!
    ");
        char a[] = "Hello";
        char b[] = "World";
        const char *p1 = a;
        char *const p2 = a;     //创建指针 p2 的时候就需要初始化,如果声明(或定义)之后再对其赋值会出现错误
        char const *p3 = a;
    
        //p1[0] = 'X';      //error, read-only location *p1
        p1 = b;             //No error when compiled
        printf("%c
    ", *p1);
    
        p2[0] = 'X';        //No error
        //p2 = b;           //error, read-only variable p2
        printf("%c
    ", *p2);
    
        p3 = b;
        //p3[0] = 'X';        //error, read-only location *p3
        printf("%c
    ", *p3);
    
        /*
        a[0] = 'X';
        printf("%s
    ", a);
        printf("%c
    ", *p1);
        //p2 = b;       //error: assignment of read-only variable 'p2'
        p2[0] = 'X';
        printf("%s
    ", a);
        //printf("")
        //p1[0] = 'H';   //这一句会出现编译错误
        a[0] = 'H';     //这一句不会出现错误
        printf("%s
    ", a);
        return 0;
        */
        return 0;
    }


    /*
    总结:
    const char * 与 char const *是一样的效果,即指针指向的内容是只读的
    char *const 表示指针的内容是只读的,即指针指向的位置是不可修改的,但是指针指向的内存是可读可写的
    const char *const pointer 兼有上面两种,即指针指向的位置不可修改,并且指针指向的内容也不能修改
    char *const const pointer 与 const char *const pointer 效果相同
    主要是看const关键字修饰的是什么
    */

  • 相关阅读:
    系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
    微阵列杂交(Microarray Hybridization)
    autocad2018安装笔记
    java基础 大数类
    leetCode 23
    java语言基础 String类
    定时任务cronie
    Linux-vim使用操作大全
    计网期末复习题目
    操作系统期末复习题
  • 原文地址:https://www.cnblogs.com/rocklee25/p/6533300.html
Copyright © 2011-2022 走看看