zoukankan      html  css  js  c++  java
  • const char *p; char const *p; char * const p的区别

    请看下面三种定义:

    const char *p;

    char const *p;

    char * const p;

    首先看第一种,我们先看p,本着”从里往外”的原则,p是一个char *类型的变量,但char *前面有一个const修饰,即p所指向的内容为const类型不可修改,我们可以写如下程序进行实验,当试图对p指向的数组的第一个元素进行修改时,编译即可发现报错:

    C语言笔试题const char *p; char const *p; char * const p;三者的区别

    第二种:char const *p;  const位于char *之间,由于char *是p的类型,此种写法和const char *等价,大家可以自行实验,如下图:

    C语言笔试题const char *p; char const *p; char * const p;三者的区别

    最后一种,char * const p; 这里const在p之前,修饰的是p,即p是不可修改的,所以,我们可以实验:

    C语言笔试题const char *p; char const *p; char * const p;三者的区别

    可以看到没有错误,p所指向的内容可以修改,而如果试图修改p的值,如下:

    C语言笔试题const char *p; char const *p; char * const p;三者的区别

    可以发现依旧是报这个错误,大家可以亲自上机实验,来加深理解。

    所以答案:

    const char *p; // 声明一个指向字符或字符串常量的指针(p所指向的内容不可修改)

    char const *p;// 同上

    char * const p;//声明一个指向字符或字符串的指针常量,即不可以修改p的值。

    const char *p1;   //p1可以被改变,*p1不可以被改变,既p1可以转向

    char onst *p2;     //p2可以改变,*p2不可以被改变,既p2可以转向

    char * const p3;  //p3不可以被改变,*p3可以被改变

    const char const *p4;   //p4与*p4都不可以被改变

  • 相关阅读:
    洛谷 P1226 【模板】快速幂||取余运算 题解
    洛谷 P2678 跳石头 题解
    洛谷 P2615 神奇的幻方 题解
    洛谷 P1083 借教室 题解
    洛谷 P1076 寻宝 题解
    洛谷 UVA10298 Power Strings 题解
    洛谷 P3375 【模板】KMP字符串匹配 题解
    Kafka Shell基本命令
    Mybatis与Hibernate的详细对比
    MyBatis简介
  • 原文地址:https://www.cnblogs.com/zhangjiansheng/p/7421225.html
Copyright © 2011-2022 走看看