zoukankan      html  css  js  c++  java
  • const修饰指针的情况分析

    C语言关键字const是用来限定一个变量不允许被改变的修饰符,当它和指针结合的时候有下面2种情况:

    1、const放在*前面, const char *p1, p1表示指向常量的指针,这时p1本身可以变化,也就是可以重新指向,但是指向的内容不能修改

    const char *p1 = "hello";
    p1++;  // ok
    p1[0] = 'w'; // compile error

    2、const放在*后面, char* const p1, 意思是p1是一个const指针,指向一个字符串,这时p1本身不能改变但是指向的内容可以变化,也就是如下代码

    1 char* const p1 = "hello";
    2 p1++;  // compile error
    3 p1[0] = 'w'; // ok in compile

    上面第3行代码咋一看没问题,编译也没错,但是运行的时候就报错。原因在于p1指向的是一个常量字符串"hello",这里

    char* const p1 = "hello";

    等价于

    char msg[] = "hello";
    const char* const p1 = msg;

    所以上面出错的语句改成如下就不会有问题了:

    char msg[] = "hello";
    char* const p1 = msg;
    p1[0] = 'w';
  • 相关阅读:
    python 魔法方法
    wfst的compose算法
    文法和语言,理解克林闭包
    openfst常用命令
    Longest Substring Without Repeating Characters
    xgboost 实践
    决策树学习
    OPC UA的监控项、订阅、和通知
    限流及常用算法
    本体论与OWL
  • 原文地址:https://www.cnblogs.com/wenxp2006/p/2499394.html
Copyright © 2011-2022 走看看